use*_*201 2 powershell file-rename
我的Prevalidation文件夹中有许多扩展名为.psa的文件,我想:
对于源文件夹中的所有.psa文件,将重复此操作.
因此,问题是我如何在循环中执行与当前一样多的.psa文件的命令集.
这是我的Prevalidation文件夹中只有一个文件的代码测试 -
Copy-Item C:\Downloads\PreValidation\*.psa C:\Downloads\Validation\WIP
Rename-Item 'C:\Downloads\Validation\WIP\abc 1234.psa' 'psaload1.csv'
Get-Content C:\Downloads\Validation\WIP\psaload1.csv | ForEach-Object { $_.replace("\,"," ") } | Set-Content C:\Downloads\Validation\WIP\psaload.csv
Remove-Item C:\Downloads\Validation\WIP\psaload1.csv
<run the psaload.csv to load to my db>
Run Code Online (Sandbox Code Playgroud)
这是我打算做的 -
考虑我的C:\ Downloads\Prevalidation文件夹中的多个.psa文件.
For each C:\Downloads\PreValidation\*.psa
BEGIN LOOP
Copy-Item C:\Downloads\PreValidation\aaaa.psa C:\Downloads\Validation\WIP\aaaa.psa
Rename-Item 'C:\Downloads\Validation\WIP\aaaa.psa' 'psaload1.csv'
Get-Content C:\Downloads\Validation\WIP\psaload1.csv | ForEach-Object { $_.replace("\,"," ") } | Set-Content C:\Downloads\Validation\WIP\psaload.csv
Remove-Item C:\Downloads\Validation\WIP\psaload1.csv
END LOOP
Run Code Online (Sandbox Code Playgroud)
我正在寻找语法来为我/ prevalidation文件夹中的每个文件逐个运行这些命令集.
由于所有其他答案都是相当可怕的代码而不是非常惯用的PowerShell,这是我的看法(尽管未经测试):
# Get all .psa files
Get-ChildItem C:\Downloads\PreValidation\*.psa |
ForEach-Object {
# Load the file's contents, replace commas with spaces
(Get-Content $_) -replace ',', ' ' |
# and write it to the correct folder and file name
Out-File C:\Downloads\WIP\psaload.csv
# I guess you'd run whatever you're doing against the file here,
# not after the loop
Remove-Item C:\Downloads\WIP\psaload.csv
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23317 次 |
| 最近记录: |