我错过了什么?
@echo off
rem - processfiles.bat - Processes all text files in the "source" folder:
rem - Runs %executable% with each text file as parameter
rem - Move the text file to the target folder after processing
set SourceFolder=C:\Users\Chris\Desktop\Yield_Files
set TargetFolder=C:\Users\Chris\Desktop\YieldCleanFiles
set fin=default.set
if not exist "%TargetFolder%" md "%TargetFolder%"
echo Processing text files in %SourceFolder%:
for %%f in (%SourceFolder%\*.txt) do call "C:\Program Files\Yield_Editor\yieldeditor.exe/csvin="(%SourceFolder%\*.txt)"/auto="y"/hide/fin=%fin%"%%f
pause
每次调用.exe
时,我都必须拥有正在处理的文件名跑步时说它找不到指定的文件,但我不确定它在谈论哪一个。
答案 0 :(得分:0)
该行
for %%f in (%SourceFolder%\*.txt) do call "C:\Program Files\Yield_Editor\yieldeditor.exe/csvin="(%SourceFolder%\*.txt)"/auto="y"/hide/fin=%fin%"%%f
必须写得最有可能
for %%f in ("%SourceFolder%\*.txt") do "C:\Program Files\Yield_Editor\yieldeditor.exe" /csvin="%SourceFolder%\*.txt" /auto=y /hide /fin=%fin% "%%~f"
或
for %%f in ("%SourceFolder%\*.txt") do "%ProgramFiles%\Yield_Editor\yieldeditor.exe" "/csvin=%SourceFolder%\*.txt" /auto=y /hide /fin=%fin% "%%~f"
这意味着您的可执行文件必须使用语法
运行"Path to Application\Application.exe" "/First Option" /Option2 /Option3 /Option4 "File Name As Fifth Parameter"
如果在命令提示符窗口中运行时显示的最后一个帮助页面上的命令提示符窗口中输出至少1个空格或具有特殊含义的其他字符,则带有文件扩展名和路径的应用程序的文件名必须使用引号{ {1}}。这是应用程序的参数0。
第一个参数/选项是应用程序的参数1。如果参数字符串包含空格或其他特殊字符,则必须在引号中。不得引用不包含空格的选项,但也可以引用它。
某些应用程序支持使用变量字符串在选项内引用。这种语法的一个例子是cmd /?
。
阅读应用程序的帮助/文档,了解有关从命令行使用它的详细信息。大多数Windows控制台应用程序都可以在命令提示符窗口中执行,只有/csvin="%SourceFolder%\*.txt"
作为参数,用于打印命令行帮助到控制台。
这里可以看到为什么带空格的参数字符串必须用引号括起来。空格是参数的分隔符。