DOS批处理命令文件 - 迭代处理
我很高兴地使用下面的Windows命令批处理.BAT来移动文件,而昨天从一些未知的原因,它停止工作。 该命令批量调用的文件good.txt包含一个JPG文件列表: 123.jpg 456.jpg etc ... 运行此批处理的文件夹包含具有相同名称的.CR2文件。该程序简单地将相应的CR2文件复制到“良好”目录。DOS批处理命令文件 - 迭代处理
你知道它为什么不工作吗?我得到一个不正确的语法错误。
由于
布莱斯
@echo off setlocal enabledelayedexpansion
call :movetodir Good
goto :end
:movetodir
set textfile=%1.txt
set writetodirectory=%1
md !writetodirectory!
for /f "tokens=* delims= " %%G in (!textfile!) do (
set filejpg=%%G
set fileraw=!filejpg:jpg=CR2!
move !fileraw! "!writetodirectory!"
)
goto :eof
:end
回答:
的第一步是找出是哪个命令实际上导致了问题。将第一行更改为:
rem @echo off
并从命令提示符运行它。发生错误的地方应该将其缩小很多。
查看文件的内容也很有用,因为文件名可能存在某些“错误”,例如它们包含空格。
回答:
变化
move !fileraw! "!writetodirectory!"
到
move "!fileraw!" "!writetodirectory!"
将是我最初的猜测 - 因为你的循环似乎使用tokens=*
获取文件名。
请注意,"tokens=* delims= "
将简单地抑制领先空间。 "delims="
将逐字地应用该行的值,包括任何(可能不存在的)前导空格。
但是有点难说,除非你指定确切的错误信息。在循环开始时(可能带有围绕它的明显的“围栏字符”)将是有帮助的。
回答:
有几个字符会破坏您发布的代码。 我假设代码是完整的 - 那么下面的代码应该执行相同的任务,但更强大的空间和! &个字符。
@echo off call :movetodir Good
goto :EOF
:movetodir
md "%~1" 2>nul
for /f "delims=" %%G in (' type "%~1.txt" ') do (
echo moving "%%~nG.CR2"
move "%%~nG.CR2" "%~1" >nul
)
以上是 DOS批处理命令文件 - 迭代处理 的全部内容, 来源链接: utcz.com/qa/265225.html