我需要以下代码的帮助:
@echo off
for /r %%a in (*.exe) do echo %%a >> get_exefiles.txt
setlocal EnableDelayedExpansion
set count=0
for /f "delims=" %%a in ('dir /b *.exe') do @(
set filename[!count!]=%%a
set /a count = count + 1
)
set /a choose = (%random% * 32768 + %random%) %% count
set chosen=!filename[%choose%]!
echo %chosen%
pause
for /f "delims=" %%a in ('dir *.exe /b') do call :ren_it "%%a"
goto :eof
:ren_it
set max=999
set min=1
set /a rng=%random% %% (max - min + 1)+ min
echo ren "%~1" "%rng%_%var%.exe
到目前为止,我设法让前两点有效:
如果可能的话,我该怎样处理其中的任何一个?
希望有人可以提供帮助,因为这些是我明天可能会在实验室测试中遇到的一些潜在问题(安全学生在这里o /) 提前谢谢你!
答案 0 :(得分:3)
你需要在=符号前删除变量名中的空格
即使在SET /A
中,这不是问题,但在大多数情况下都是一个问题。
这似乎在这里工作 - 我没有重命名该文件,但这也应该有效。
@echo off
setlocal EnableDelayedExpansion
set count=0
for /r %%a in (*.exe) do (
set filename[!count!]=%%a
set /a count=count + 1
)
set /a choose=(%random% * 32768 + %random%) %%count
set chosen=!filename[%choose%]!
echo "%chosen%" "%choose%"
pause
ren "%chosen%" "%choose%.exe"
获取随机exe名称:
在这里你可以skip
一些文件名来获取一个随机的exe名称,并重命名它,分支到:完成以退出循环。 skip=
从1开始,因此您可以将变量空白以从循环中获取第一个文件名,如第一行所示。
if %number% GTR 0 (set skip=skip=%number%) else (set skip=)
for /f "%skip% delims=" %%a in ('dir *.exe /b') do (
ren "%%a" "random name.exe"
goto :done
)
:done