Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件以重复程序进程_Batch File_Cmd - Fatal编程技术网

Batch file 批处理文件以重复程序进程

Batch file 批处理文件以重复程序进程,batch-file,cmd,Batch File,Cmd,我不完全熟悉命令行脚本。我正在尝试创建一个批处理文件以读取txt文件,应用一种格式将文件从报表转换为表格,然后将文件导出为电子表格 我可以让脚本为单个文件工作,但是如果我尝试通过循环运行多个文件,则什么也不会发生。它启动程序,通过每个脚本行执行,但又不执行任何操作。它没有设置路径。没有撞车。在这里,我将脚本从循环中取出,并将其应用于单个文件,它可以正常工作。有什么建议吗 SET monarch_bin="C:\Program Files (x86)\Datawatch\Monarch\Progr

我不完全熟悉命令行脚本。我正在尝试创建一个批处理文件以读取txt文件,应用一种格式将文件从报表转换为表格,然后将文件导出为电子表格

我可以让脚本为单个文件工作,但是如果我尝试通过循环运行多个文件,则什么也不会发生。它启动程序,通过每个脚本行执行,但又不执行任何操作。它没有设置路径。没有撞车。在这里,我将脚本从循环中取出,并将其应用于单个文件,它可以正常工作。有什么建议吗

SET monarch_bin="C:\Program Files (x86)\Datawatch\Monarch\Program\Monarch.exe"

 for /f "delims=" %%i in ('dir /b "C:\Users\Me\Desktop\Sample Monarach Input\*.txt"') do (

    echo File directory : %%i

    SET infilename=/Rpt: "C:\Users\Me\Desktop\Sample Monarach Input\%%i.txt" 
    echo ####### In file name:%infilename%

    SET model_file=/mod:"C:\Users\Me\Desktop\Sample Monarach Input\InvoiceSummary.xmod" 
    echo ####### Model: %model_file%

    SET outfilename=/exp:"C:\Users\Me\Desktop\Sample Monarach Input\OUTPUT.xlsx" 
    echo ####### Out file name:%outfilename%

    SET mode=/expfileopt:append /T
    echo ####### File: %%i
    %monarch_bin%%infilename%%model_file%%outfilename%%mode%
pause
)

延迟扩展问题(说明)

如果在代码块内更改了变量值,则需要延迟扩展以检索同一代码块内更改的值

但是,这可以写成

set "monarch_bin=C:\Program Files (x86)\Datawatch\Monarch\Program\Monarch.exe"
set "inputFolder=C:\Users\Me\Desktop\Sample Monarach Input"

for %%i in ("%inputFolder%\*.txt") do (
    "%monarch_bin%" ^
    /Rpt:"%%~fi" ^
    /mod:"%%~dpiInvoiceSummary.xmod" ^
    /exp:"%%~dpioutput.xlsx" ^
    /expfileopt:append /T
)

如果
for
循环将迭代
.txt
文件列表,并且
%%i
将保存对文件的引用,那么,
%%fi
是文件的完整路径,
%%~dpi
是存储文件的驱动器和路径。

Read.Hi MC nd,我试图实现提供的解决方案,但要么语法错误,要么就是我不太理解。对不起,我的意思是,另一个问题中的问题根源是相同的:在更改变量的块中看不到变量的更改。我已经包含了对您的代码的修改。感谢您的澄清。我有类似于上面的内容,但文件名中的空格字符导致了问题。
set "monarch_bin=C:\Program Files (x86)\Datawatch\Monarch\Program\Monarch.exe"
set "inputFolder=C:\Users\Me\Desktop\Sample Monarach Input"

for %%i in ("%inputFolder%\*.txt") do (
    "%monarch_bin%" ^
    /Rpt:"%%~fi" ^
    /mod:"%%~dpiInvoiceSummary.xmod" ^
    /exp:"%%~dpioutput.xlsx" ^
    /expfileopt:append /T
)