我想要复制.bat
文件。副本应与原始文件位于同一路径中,并具有随机数作为名称。到目前为止,这是我的方法:
@echo
pause
SET nr = %RANDOM%
xcopy "%cd%\*.bat" "%nr%.bat" /q /y
pause
第一个问题:我需要做什么,程序创建一个.bat
文件,前面有一个数字? (因为现在它只创建一个.bat
文件而没有任何东西在点前......)
第二个问题:如果目标是文件或目录,我该如何解决问题呢?
答案 0 :(得分:1)
SET nr = %RANDOM%
创建一个名称为%nr %
的变量,而不是%nr%
和,并且值中有一个前导空格。
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。
答案 1 :(得分:0)
除了line !~ /\d/
行将名为SET nr = %RANDOM%
SPACE 的变量设置为以 SPACE 开头的随机数之外,你实际上做了不需要临时变量nr
,您可以立即使用nr
。
要避免RANDOM
的文件/目录提示,请改用xcopy
命令。请注意,这不支持copy
切换。相反,您可以使用/Q
来阻止> nul
显示某些内容。
您不需要在源copy
之前加*.bat
,因为%CD%\
只指向当前工作目录,但%CD%
单独指向该目录。
最后,我假设*.bat
你实际上是指@echo
来抑制命令回声。
所以这是固定代码:
@echo off