如何使用.CSV单元格

时间:2018-01-31 19:18:18

标签: windows powershell 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"

我要求这些任务一个接一个地运行。

我将.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
}

screen cap of .csv file

感谢您的帮助或感谢,因为我没有自己查找信息,或者搞砸了格式,或者仅仅因为我不擅长编写脚本。

感谢您的一切。

1 个答案:

答案 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

相关问题