批处理 找出所有非系统分区内后缀为exe的文件,并重命名为EXE_?

批处理 找出所有非系统分区内后缀为exe的文件,并重命名为EXE_?,第1张

以下是一个可以实现该功能的Windows批处理脚本:

```

@echo off

setlocal EnableDelayedExpansion

rem 遍历非系统分区,查找后缀为exe的文件

for /f "skip=1 tokens=1-3" %%a in ('wmic logicaldisk where "drivetype!=5 and not deviceid like '%:%'" get deviceid^,size^,freespace ^| findstr /r "[A-Za-z]\:"') do (

set "drive=%%a"

pushd "!drive!\"

for /r %%i in (*.exe) do (

echo 重命名 %%i 为 %%~ni_EXE%%~xi

ren "%%i" "%%~ni_EXE%%~xi"

)

popd

)

```

该脚本会遍历所有非系统分区(排除光驱等非磁盘设备),查找后缀为exe的文件,并将其重命名为“文件名_EXE.exe”的形式。具体说明如下:

1. `EnableDelayedExpansion`:启用延迟变量,以便在循环中使用变量。

2. `for /f` 循环:通过WMIC命令获取所有非系统分区的设备号,并将其存储在`%%a`中。

3. `pushd !drive!\`:进入当前分区的根目录。

4. `for /r` 循环:遍历该分区及其子目录下的所有exe文件。

5. `ren` 命令:对于每个找到的exe文件,使用ren命令将其重命名为`文件名_EXE.exe`的形式。

6. `popd`:返回上一级目录。

请注意,在使用该脚本前,请务必备份重要文件,以免发生错误。

第一步:准备好用于输入的文件list.txt,每次一行,形如:

20

100

"data.1.txt"

20

100

"data.2.txt"

保存为list.txt

注意,如果运行100次,每次输入3回,则list.txt应有300行。(输入内容有规律的话,也可以用批处理生成list.txt)

第二步:

(1)如果AA.exe本身是命令行程序的话,批处理文件a.bat这样写就可以了:

@echo off

(for /l %%i in (1,1,100) do AA.exe)<list.txt

(2)如果AA.exe是带有图形界面的程序的话,那就有点复杂了。我能想到的就是模拟按键输入,不知道还有没有其他好的方法。批处理文件a.bat如下:

@echo off

set cnt=100

set num=3

set "title=输入提示"

set time1=2

set time2=3

(for /l %%i  in (1,1,%cnt%) do (

start "" AA.exe

ping -n %time1% 127.1 >nul

for /l %%j in (1,1,%num%) do (

set /p str=

setlocal enabledelayedexpansion

set "str=!str:"=""!"

mshta vbscript:clipboarddata.setdata("text","!str!"^)(close^)

endlocal

mshta vbscript:execute("document.write:With CreateObject(""Wscript.shell""):.AppActivate(""%title%""):.sendkeys(""^v~""):end with:self.close"^)

ping -n %time2% 127.1 >nul

)))<list.txt

exit

说明:

第二行cnt的值100:AA.exe要循环运行的次数。

第三行num的值3:AA.exe运行后会的输入次数。

第四行title的值"窗口标题":输入提示窗口的标题内容。这个是关键!如果提示窗口每次都不一样的话,这个批处理还需要修改一下。

第五行time1的值2:AA.exe启动完成所需的秒数。

第六行time2的值3:输入提示窗口相隔的秒数,最小为3。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11467111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存