长时间听众,第一次来电。
我将变量存储在.csv文件中,用于生成.cmd文件以及设置计划任务以运行它们。
实施例。 .cmd文件:
C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script.py"
C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script2.py"
C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script3.py"
我要求这些任务一个接一个地运行。
我将.cmd文件的内容存储在.csv文件的单元格中,并在每行后返回。因此.csv单元看起来与.cmd文件的预期内容相同。
问题是.cmd文件的内容写在一个长行中:
C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script.py" C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script2.py"C:\Python27\ArcGIS10.5\python.exe "D:\ScriptRepo\Script3.py"
我尝试在每一行之后插入`r`n
,但这只是将这些字符内联写入。防爆。 Line `r`n Line `r`n
等......
问题:
1)在.cmd文件中,您可以声明要运行的程序的.exe,然后是要运行该程序的脚本列表吗?如果是这样,他们会等到第一个脚本完成,然后再转到下一个脚本吗?
2)如何在.cmd文件中写一个新行?
当前Powershell写入.cmd文件:
$files = Import-Csv D:\scheduling.csv
FOREACH ($file in $files)
{
$full_cmd_path = $file.cmd_filepath += $file.cmd_filename
New-Item $full_cmd_path -type file -force -value
$file.cmd_filename_content
}
感谢您的帮助或感谢,因为我没有自己查找信息,或者搞砸了格式,或者仅仅因为我不擅长编写脚本。
感谢您的一切。
答案 0 :(得分:1)
问题可能是$file.cmd_filename_content
包含带有unix样式行结尾的多行字符串。
您可以将字符串拆分为单独的字符串,然后将它们管道输出到Out-File:
foreach($file in $files)
{
$full_cmd_path = Join-Path $file.cmd_filepath $file.cmd_filename
$content = $file.cmd_filename_content -split '\r?\n' |Out-File -Path $full_cmd_path
}
Out-File
会在每行后添加一个窗口样式的行结尾(CRLF
/ `r`n
)