Batch file 调试批处理文件

Batch file 调试批处理文件,batch-file,Batch File,我编写了一个批处理文件,该文件应该迭代一个文件夹中的所有.csv文件,并对每个文件执行以下操作:将其移动/重命名为另一个文件夹中的solar.csv,同时覆盖任何同名文件,启动一些利用solar.csv的服务,等待7.5分钟,停止服务。应针对文件夹中的每个.csv文件执行此操作。我希望它报告每一步,因为它做得很好。以下是我目前的代码: @ECHO OFF CD "D:\PI Data Import\Data" For /R %%G IN (*.csv) DO ( MOVE /Y %%G.cs

我编写了一个批处理文件,该文件应该迭代一个文件夹中的所有.csv文件,并对每个文件执行以下操作:将其移动/重命名为另一个文件夹中的solar.csv,同时覆盖任何同名文件,启动一些利用solar.csv的服务,等待7.5分钟,停止服务。应针对文件夹中的每个.csv文件执行此操作。我希望它报告每一步,因为它做得很好。以下是我目前的代码:

@ECHO OFF
CD "D:\PI Data Import\Data"

For /R %%G IN (*.csv) DO (

MOVE /Y %%G.csv "D:\PI Data Import\solar.csv"
ECHO "%%G.csv Moved"
NET START RDBMSPI4
ECHO "Service Started"
ECHO "Waiting"
TIMEOUT /T 450 /NOBREAK
NET STOP RDBMSPI4
Echo "%%G.csv Complete"

)
它报告我的命令语法不正确,但没有确切说明是哪一部分。我假设FOR/R行有点错误,可能是MOVE命令,也可能是我如何处理命令部分中的%%G


我真正需要的只是一个语法检查,我担心在它成为黄金之前要对它进行太多的测试,因为它将运行的服务器有点重要。感谢所有帮助,我对批处理文件一点经验都没有。

我想从for命令中删除/R。另外,不要将.csv放在%%g之后的任何位置。它们已经附加了.csv文件,就像它们是.csv文件一样

每次移动csv文件时,您都将覆盖solar.csv文件。顺便说一句,如果您希望将csv文件附加到solar.csv,则可能必须将其键入该文件。例如

在你循环之前

if exist solar.csv del solar.csv
在你的循环中

type %%g >> solar.csv

除非您的服务要处理每个solar.csv文件,然后您只需用下一个文件覆盖该文件,否则您将获得金牌:)

用于常规调试,我建议删除/注释掉
@ECHO OFF
命令,以便在产生错误时查看正在处理的最后一个命令。如果任何CSV文件中有空格,则
MOVE
命令将出错。请确保引用文件名以确保:
“%%G”
谢谢您的输入!我做了建议的更改,但我确实希望每次移动时都覆盖它。如果我删除/R,它还会递归地遍历父目录吗?我希望能够将数据放入数据文件夹中的文件夹中,并在每个文件夹中的所有内容上运行此功能。我最初无法使其与/R一起工作,但如果需要这样做,并且它对您很好,请保留它,是:)