我正在尝试使batch file从pendrive中删除恶意文件。 我知道这些恶意文件使用隐藏,只读和系统属性主要是为了隐藏自己的用户。 目前我正在使用cmd删除这些文件,删除恶意文件属性,然后删除它。 现在我想创build一个小的batch file,只需input驱动器号就可以删除这些文件。
我在网站上find了这个代码来查找文件的属性。 但input文件名称后,batch file刚刚退出,没有显示任何结果。
@echo off setlocal enabledelayedexpansion color 0a title Find Attributes in Files :start set /p atname=Name of the file: if not exist %atname% ( cls echo No file of that name exists! echo. echo Press any key to go back pause>nul goto start ) for /f %%i in (%atname%) do set attribs=%%~ai set attrib1=!attribs:~0,1! set attrib2=!attribs:~1,1! set attrib3=!attribs:~2,1! set attrib4=!attribs:~3,1! set attrib5=!attribs:~4,1! set attrib6=!attribs:~5,1! set attrib7=!attribs:~6,1! set attrib8=!attribs:~7,1! set attrib9=!attribs:~8,1! cls if %attrib1% equ d echo Directory if %attrib2% equ r echo Read Only if %attrib3% equ a echo Archived if %attrib4% equ h echo Hidden if %attrib5% equ s echo System File if %attrib6% equ c echo Compressed File if %attrib7% equ o echo Offline File if %attrib8% equ t echo Temporary File if %attrib9% equ l echo Reparse point echo. echo. echo Press any key to go back pause>nul goto start
你能告诉我为什么这个batch file正在退出而不显示任何结果。 或者你可以给任何更好的批处理脚本获取文件的属性。
编辑
Windows批处理脚本 – 对于/ L不工作 – 简单
如何将BAT文件中的命令发送到Windows中正在运行的NodeJS进程?
Windows批处理脚本:无法将包含html标记的文件复制到另一个文件
我能够将上述代码仅用于单个文件。 由于我的batch file的目的是通过input驱动器号去除恶意文件。 我怎样才能使用它来find什么样的属性文件在特定的驱动器中使用。
例如:在cmd中我们可以使用这个命令来查找给定驱动器的文件属性
attrib *.*
感谢您的帮助
如何在可locking(只读)和解锁驱动器的窗口中为diskpart cmd创buildbatch file
咕噜执行停止批处理脚本
如何逃脱! 在一个variables的值?
批处理:“usebackq”在这个时候没有预料到
通过C#控制台应用程序运行batch file。 命令被忽略
我试过了蝙蝠文件(没有检查细节),它似乎为我工作得很好。 我注意到,如果不用引号括起文件路径,例如“file”,它会立即关闭。 例:
Name of the file: pathfile.txt // this will close immediately Name of the file: "pathfile.txt" // Now it will stay open and display the result
这有希望解决你的问题。
至于你在EDIT中的问题,一个简单的选择是迭代一个文件列表,并在每个文件上执行批处理。
batch1.bat: (%1指的是第一个命令行参数)
@echo off setlocal enabledelayedexpansion echo %1 set atname=%1 for %%i in ("%atname%") do set attribs=%%~ai set attrib1=!attribs:~0,1! cls if %attrib1% equ d echo Directory if %attrib2% equ r echo Read Only if %attrib3% equ a echo Archived if %attrib4% equ h echo Hidden if %attrib5% equ s echo System File if %attrib6% equ c echo Compressed File if %attrib7% equ o echo Offline File if %attrib8% equ t echo Temporary File if %attrib9% equ l echo Reparse point echo. echo.
接下来,生成给定路径中的所有文件的列表(包括所有子文件夹的“文件夹”):
dir /s /b folder > listofFiles.txt
main.bat ( 逐行读取listofFiles.txt并将每行传递给batch1.bat作为命令行参数):
@echo off for /f "tokens=*" %%l in (listofFiles.txt) do (batch1.bat %%l)
然后,从cmd:
main.bat >> output.txt
最后一步生成具有完整结果的输出文件。 当然,这可以用更精细(也可能更短)的方式来完成,但这是你可以采取的一个明显的方向。
你在这里使用了一个for /f循环,这是不必要的(如果文件名包含空格,可能会产生不希望的结果)。 改变这个:
for /f %%i in (%atname%) do set attribs=%%~ai
进入这个:
for %%i in ("%atname%") do set attribs=%%~ai
这是危险的代码 – 但它会删除只读,隐藏和系统文件。 它应该无法在c:驱动器上运行,但我没有测试过。 请注意,某些Windows安装位于c:
@echo off echo "%cd%"|find /i "c:" >nul || ( del *.??? /ar /s /f del *.??? /ah /s del *.??? /as /s )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。