微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用batch file获取文件的属性

我正在尝试使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正在退出不显示任何结果。 或者你可以给任何更好的批处理脚本获取文件属性

编辑

两个inputvariables在一个简单的bat文件

Windows批处理脚本 – 对于/ L不工作 – 简单

如何将BAT文件中的命令发送到Windows中正在运行的NodeJS进程?

xcopy – 复制至less一个匹配模式的文件

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] 举报,一经查实,本站将立刻删除。

相关推荐