我正在编写一个Powershell脚本,它将获取用户指定文件夹中的所有文件,并将它们逐个传递给命令行,然后命令行将生成的文件(.CSVs)转储到另一个用户指定的文件夹中。我正在尝试使用与原始文件相同的CSV文件名。该命令必须从特定文件夹(C:\ Program Files(x86)\ Reporter)执行。
这是我到目前为止所做的,但我似乎无法使任何工作超过write-host
- 对于循环,迭代,字符串,你的名字,Powershell和我不是bueno。
pushd "C:\Program Files (x86)\Reporter\"
$filename = read-host "Enter the complete path of Original files"
$csvfiles = read-host "Enter the complete path for the CSVs"
write-host $filename
write-host $csvfiles
$reporter = "reporter.exe /rptcsv", $filename + ".csv", $filename
[$filename.string]::join(" ",(gci))
命令行命令必须为program.exe /rptcsv <file being created> <file being used>
。我需要它一次处理一个,在处理第二个之前等待前一个完成。原始文件的数量会有所不同,所以我只需要它来处理它们,它们都已经完成了。我已经完成了批处理文件和一些Python,但从未使用过Powershell。我以前在Python中做过这个,只是被告知现在我们需要Powershell而不是 - 这是我第一次进入Powershell,而且这是一个很糟糕的事情。可以这样做吗?
编辑:回答!!
这是工作代码:
pushd "C:\Program Files (x86)\Reporter"
$src = read-host "Enter the complete path of the folder with original files"
$dst = read-host "Enter the complete path of the folder for the CSVs"
write-host $src
write-host $dst
$reporter = 'reporter.exe /rptcsv'
Get-ChildItem $src | % {
$outfile = Join-Path $dst ($_.Name + ".csv")
cmd /c $reporter $outfile $_.FullName
}
答案 0 :(得分:1)
只要reporter.exe
不是异步运行(即在后台处理文件时不立即返回),这样的事情应该有效:
pushd "C:\Program Files (x86)\Reporter"
$src = read-host "Enter the complete path of the folder with original files"
$dst = read-host "Enter the complete path of the folder for the CSVs"
write-host $src
write-host $dst
Get-ChildItem $src | % {
$outfile = Join-Path $dst ($_.Name + ".csv")
reporter.exe /rptcsv $outfile $_.FullName
}