Это удваивает мой выходной файл!Как я могу это исправить? - PullRequest
0 голосов
/ 22 мая 2018

Он продолжает смотреть на ваш исходный файл, затем добавляет эти изменения в ваш вывод, так как исходный файл не изменяется, он продолжает добавлять их в вывод

 $data = @(
        @{
            pattern = "LACTION 'SQL\(''logility_prod_scp_logility'',"
            replacement = "LACTION 'SQL(''LOGILITY_PROD_SCP_LOGILITY'',"
            inputFile = "C:\files\DW_FEI_input1.ctg"
            outputFile = "C:\files\DW_FEI_output1.ctg"
        },
        @{
            pattern = "LACTION 'SQL\(''dwfei'',"
            replacement = "LACTION 'SQL(''DW_FEI'',"
            inputFile = "C:\files\DW_FEI_output1.ctg"
            outputFile = "C:\files\DW_FEI_output2.ctg"
        },    
        @{
            pattern = "LACTION 'SQL\(''DWFEI'',"
            replacement = "LACTION 'SQL(''DW_FEI'',"
            inputFile = "C:\files\DW_FEI_output2.ctg"
            outputFile = "C:\files\DW_FEI_output3.ctg"
        }

    )

    $data | 
        ForEach-Object  { 
            (Get-Content $_.inputFile) -replace $_.pattern, $_.replacement | Out-File $_.outputFile
        }
    I used above code..trying many other way's as well..how can i make sure my file sizes are not doubled?

Я не хочу, чтобы моифайл для изменения размера ... все вышеуказанные изменения необходимо выполнить только для одного выходного файла

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Поместите приведенный ниже скрипт в файл PowerShell .ps1.

$data = @(
    @{
        pattern = "LACTION 'SQL\(''logility_prod_scp_logility'',"
        replacement = "LACTION 'SQL(''LOGILITY_PROD_SCP_LOGILITY'',"
        inputFile = "C:\files\DW_FEI_input.ctg"
        outPutFile = "C:\files\DW_FEI_output.ctg"
    },
    @{
        pattern = "LACTION 'SQL\(''dwfei'',"
        replacement = "LACTION 'SQL(''DW_FEI'',"
        inputFile = "C:\files\DW_FEI_input.ctg"
        outPutFile = "C:\files\DW_FEI_output.ctg"
    },    
    @{
        pattern = "LACTION 'SQL\(''DWFEI'',"
        replacement = "LACTION 'SQL(''DW_FEI'',"
        inputFile = "C:\files\DW_FEI_input.ctg"
        outputFile = "C:\files\DW_FEI_output.ctg"
    },
    @{
        pattern = "LACTION 'SQL\(''DWFEI'',"
        replacement = "LACTION 'SQL(''DW_FEI'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"

    },
    @{
        pattern = "LACTION 'SQL\(''dwfei'',"
        replacement = "LACTION 'SQL(''DW_FEI'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"
    },    
    @{
        pattern = "LACTION 'SQL\(''user_shared'',"
        replacement = "LACTION 'SQL(''USER_SHARED'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"

    },
    @{
        pattern = "LACTION 'SQL\(''DW_FEI_PROD'',"
        replacement = "LACTION 'SQL(''DW_FEI'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"
    },
    @{
        pattern = "LACTION'SQL\(''SALES_MART_PROD'',"
        replacement = "LACTION 'SQL(''SALES_MART'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"
    },    
    @{
        pattern = "LACTION 'SQL\(''sales_mart'',"
        replacement = "LACTION 'SQL(''SALES_MART'',"
        inputFile = "C:\files\SALES_MART_input.ctg"
        outPutFile = "C:\files\SALES_MART_output.ctg"
    }
)

$data | 
    ForEach-Object  { 
        (Get-Content $_.inputFile) -replace $_.pattern, $_.replacement | Out-File $_.outputFile
    }

Редактировать

Флаг --Append должен присутствовать на Out-File.

$data | 
    ForEach-Object  { 
        (Get-Content $_.inputFile) -replace $_.pattern, $_.replacement | Out-File $_.outputFile --append
    }

Редактировать

Если вы не знакомы с PowerShell, самый простой способ запустить этот скрипт - выполнить следующие шаги.

  1. Скопируйте / вставьте скрипт PowerShell в файл с именем script.ps1.
  2. Скопируйте / вставьте содержимое ниже в файл с именем runscript.cmd.

    @echo off
    SET psfile="%~dp0script.ps1"
    PowerShell.exe -ExecutionPolicy ByPass -File %psfile%
    pause
    
  3. Выполнить runscript.cmd из командной строки.

0 голосов
/ 22 мая 2018

Дает ли это ожидаемые результаты?

$pattern = "LACTION 'SQL\(''DWFEI'',"
$replacement = "LACTION 'SQL(''DW_FEI'',"
(Get-Content "inputfile.txt") -replace $pattern,$replacement |
  Out-File "newfile.txt"
...