Преобразовать список файлов из папки ... преобразовать запятую в разделитель трубы - PullRequest
0 голосов
/ 24 мая 2019

Я писал сценарий Windows для преобразования файла с разделителями-запятыми в разделители-запятые.Когда я запускаю его для одного файла, он выполняет преобразование, но когда я запускаю его для файлов в папке, он этого не делает.

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


@echo off

set "INPUT=%C:\temp\source\*.csv"
set "OUTPUT=%C:\temp\dest\"

setlocal EnableExtensions DisableDelayedExpansion



> "%OUTPUT%" (
for %%F in (%*) do
(
    delims^=^ eol^= %%L in ("%INPUT%") do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:^|^=,!
        endlocal
    )
)
)
endlocal
exit /B

я хочу запустить скрипт для всех файлов в папке

1 Ответ

1 голос
/ 25 мая 2019

Вот мои два комментария , расширенных для нескольких файлов:

$folderPath = 'C:\temp\source\'
$folderPathDest = 'C:\temp\dest\'
Get-ChildItem $folderPath -Name -Filter *.csv |
ForEach-Object {
    $filePath = $folderPath + $_
    $filePathdest = $folderPathDest + $_
    Import-Csv -Path $filePath -Delimiter '|' |
    Export-Csv -Path $filePathDest –NoTypeInformation
}
$folderPath = 'C:\temp\source\'
$folderPathDest = 'C:\temp\dest\'
# As the pipe is a special character we need to escape it with a backslash
$stringToReplace = '\|'
$stringToAdd = ','
Get-ChildItem $folderPath -Name -Filter *.csv |
ForEach-Object {
    $filePath = $folderPath + $_
    $filePathdest = $folderPathDest + $_
    (Get-Content -Path $filePath) -Replace $stringToReplace,$stringToAdd |
    Set-Content -Path $filePathdest
}

В последнем случае, если используется + вы также можете включить опцию -Raw в Get-Content, то есть (Get-Content -Path $filePath -Raw)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...