0

我需要以下代码的帮助:

@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

到目前为止,我设法使前两点起作用:

  1. 查找/搜索特定文件夹中的任何 EXE 文件。(完成!虽然不确定这是否是正确的方法?)
  2. 查找多个 EXE 文件并随机选择一个。
  3. 将 exe 文件重命名为某个随机名称。(这部分让我感到沮丧,我无法让它工作)

如果可能的话,我该如何处理这些?

  1. 将名称为 Hello_World_RandomNUM 的新随机键添加到注册表(为键赋予任意值)
  2. 创建新的子文件夹
  3. 在子文件夹中创建一个大文件(例如 12MB)。文件的内容可以是任何随机的东西。
  4. 一个无限循环,它只是 ping 一些机器并打印空设备的结果。
  5. 添加具有特定用户名和密码的新用户帐户。

希望有人可以提供帮助,因为这些是我明天可能会在实验室测试中遇到的一些潜在问题(这里是安全学生 o/)提前谢谢你!

4

1 回答 1

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 名称,然后重命名它,分支到 :done 以退出循环。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
于 2013-11-13T00:53:56.380 回答