一个.bat文件,用于搜索特定文件夹中的任何exe文件

时间:2013-11-12 22:19:19

标签: batch-file

我需要以下代码的帮助:

@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文件重命名为某个随机名称。 (这部分让我感到沮丧,我无法让它发挥作用)
  4. 如果可能的话,我该怎样处理其中的任何一个?

    1. 在名称Hello_World_RandomNUM下添加新的随机密钥到 注册表(给密钥赋予任意值)
    2. 创建新的子文件夹
    3. 在子文件夹中创建一个大尺寸的文件(例如12MB)。文件的内容可以是随机的。
    4. 一个无限循环,只需ping一些机器并打印空设备的结果。
    5. 添加具有特定用户名和密码的新用户帐户。
    6. 希望有人可以提供帮助,因为这些是我明天可能会在实验室测试中遇到的一些潜在问题(安全学生在这里o /) 提前谢谢你!

1 个答案:

答案 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