0

我正在尝试制作一个批处理文件(比如说a.bat),它在运行时会创建另一个批处理文件(比如说b.bat)。现在,我正在使用 b.bat 重命名某些文件。重命名的代码是,

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

SET "folder=path\to the\file"

::Action
CD /d "%folder%"
FOR %%F IN ("old filename") DO (
 MOVE "%%F" "new filename"
)

a.bat 中用于在 b.bat 中编写代码的代码是,

@echo off

set VarOne=@echo off
set VarTwo=SETLOCAL ENABLEDELAYEDEXPANSION
set VarThree=::Action
set VarFour=CD /d "path\to the\file"
set VarFive=FOR %%F IN ("old filename") DO (
set VarSix= MOVE "%%F" "new filename"
set VarSeven=)

echo %VarOne% >> %Output%\test.bat
echo %VarTwo% >> %Output%\test.bat
echo %VarThree% >> %Output%\test.bat
echo %VarFour% >> %Output%\test.bat
echo %VarFive% >> %Output%\test.bat
echo %VarSix% >> %Output%\test.bat
echo %VarSeven% >> %Output%\test.bat

现在的问题是生成 b.bat 时是这样的,

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

SET "folder=path\to the\file"

::Action
CD /d ""
FOR %F IN ("old filename") DO (
 MOVE "%F" "new filename"
)

%folder% 和来自 %%f 的 % 消失了。那么我该怎么做呢?请帮帮我。

4

1 回答 1

0

npocmaka 和 LS_dev 在评论中所说的是正确的。您必须将每个加倍%并使用:

set VarFive=FOR %%%%F IN ("old filename") DO (

我亲自测试了这两个并且可以确认。

于 2017-12-05T14:00:15.990 回答