如何将变量放入我的文件名中?
How can I put a variable into my filename?
我想复制一个 .bat
文件。副本应与原始文件位于同一路径中,并使用随机数作为名称。到目前为止,这是我的方法:
@echo
pause
SET nr = %RANDOM%
xcopy "%cd%\*.bat" "%nr%.bat" /q /y
pause
第一个问题:程序创建一个 .bat
文件并在点前加上一个数字,我该怎么做? (因为现在它只创建一个 .bat
文件,点前面没有任何内容...)
第二个问题:如果目标是文件或目录,如何停止问题?
SET nr = %RANDOM%
创建名称中尾随 space 的变量:%nr %
而不是 %nr%
and 前导 space 中的值。
SET nr = %RANDOM%
rem ↑ ↑ remove spaces
rem use following syntax instead
SET "nr=%RANDOM%"
你可以使用
xcopy "%cd%\*.bat" "%random%.bat" /q /y
但请注意 %nr%
和 %random%
都没有改变。下面的代码片段会更好
for /F "delims=" %%G in ( 'dir /b *.bat' ) do (
SETLOCAL EnableDelayedExpansion
xcopy "%%~G" "!random!.bat" /q /y
ENDLOCAL
)
同时阅读 RANDOM article。
除了 SET nr = %RANDOM%
行将一个名为 nr
SPACE 的变量设置为一个随机数,前面加上 SPACE,其实不需要中间变量nr
,直接用RANDOM
就可以了。
要避免 xcopy
的 file/directory 提示,请改用 copy
命令。请注意,这不支持 /Q
开关。相反,您可以使用 > nul
来防止 copy
显示某些内容。
您不需要在源代码 *.bat
之前加上 %CD%\
,因为 %CD%
仅指向当前工作目录,而 *.bat
单独指向该目录无论如何。
最后,我假设 @echo
你实际上是指 @echo off
抑制命令回显。
固定代码如下:
@echo off
pause
copy /Y "*.bat" "%RANDOM%.bat" > nul
pause
我想复制一个 .bat
文件。副本应与原始文件位于同一路径中,并使用随机数作为名称。到目前为止,这是我的方法:
@echo
pause
SET nr = %RANDOM%
xcopy "%cd%\*.bat" "%nr%.bat" /q /y
pause
第一个问题:程序创建一个 .bat
文件并在点前加上一个数字,我该怎么做? (因为现在它只创建一个 .bat
文件,点前面没有任何内容...)
第二个问题:如果目标是文件或目录,如何停止问题?
SET nr = %RANDOM%
创建名称中尾随 space 的变量:%nr %
而不是 %nr%
and 前导 space 中的值。
SET nr = %RANDOM%
rem ↑ ↑ remove spaces
rem use following syntax instead
SET "nr=%RANDOM%"
你可以使用
xcopy "%cd%\*.bat" "%random%.bat" /q /y
但请注意 %nr%
和 %random%
都没有改变。下面的代码片段会更好
for /F "delims=" %%G in ( 'dir /b *.bat' ) do (
SETLOCAL EnableDelayedExpansion
xcopy "%%~G" "!random!.bat" /q /y
ENDLOCAL
)
同时阅读 RANDOM article。
除了 SET nr = %RANDOM%
行将一个名为 nr
SPACE 的变量设置为一个随机数,前面加上 SPACE,其实不需要中间变量nr
,直接用RANDOM
就可以了。
要避免 xcopy
的 file/directory 提示,请改用 copy
命令。请注意,这不支持 /Q
开关。相反,您可以使用 > nul
来防止 copy
显示某些内容。
您不需要在源代码 *.bat
之前加上 %CD%\
,因为 %CD%
仅指向当前工作目录,而 *.bat
单独指向该目录无论如何。
最后,我假设 @echo
你实际上是指 @echo off
抑制命令回显。
固定代码如下:
@echo off
pause
copy /Y "*.bat" "%RANDOM%.bat" > nul
pause