windows – 如何使用批处理文件获取文件的属性

前端之家收集整理的这篇文章主要介绍了windows – 如何使用批处理文件获取文件的属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试制作批处理文件以从pendrive中删除恶意文件.我知道这些恶意文件主要使用隐藏,只读和系统属性来隐藏自己的用户.目前我通过删除恶意文件属性然后删除它来使用cmd删除这些文件.现在我想制作一个小批量文件,只需输入驱动器号即可用于删除这些文件.

我在网站上找到了这个代码来查找文件属性.但是在输入文件名后,批处理文件才会退出不显示任何结果.

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. color 0a
  4. title Find Attributes in Files
  5.  
  6. :start
  7. set /p atname=Name of the file:
  8. if not exist %atname% (
  9. cls
  10. echo No file of that name exists!
  11. echo.
  12. echo Press any key to go back
  13. pause>nul
  14. goto start
  15. )
  16. for /f %%i in (%atname%) do set attribs=%%~ai
  17. set attrib1=!attribs:~0,1!
  18. set attrib2=!attribs:~1,1!
  19. set attrib3=!attribs:~2,1!
  20. set attrib4=!attribs:~3,1!
  21. set attrib5=!attribs:~4,1!
  22. set attrib6=!attribs:~5,1!
  23. set attrib7=!attribs:~6,1!
  24. set attrib8=!attribs:~7,1!
  25. set attrib9=!attribs:~8,1!
  26. cls
  27. if %attrib1% equ d echo Directory
  28. if %attrib2% equ r echo Read Only
  29. if %attrib3% equ a echo Archived
  30. if %attrib4% equ h echo Hidden
  31. if %attrib5% equ s echo System File
  32. if %attrib6% equ c echo Compressed File
  33. if %attrib7% equ o echo Offline File
  34. if %attrib8% equ t echo Temporary File
  35. if %attrib9% equ l echo Reparse point
  36. echo.
  37. echo.
  38. echo Press any key to go back
  39. pause>nul
  40. goto start

你能告诉我为什么这个批处理文件退出而没有显示任何结果.或者您可以提供任何更好的批处理脚本来获取文件属性.

编辑

我只能为一个文件处理上面的代码.因为我的批处理文件的目的是通过输入驱动器号来删除恶意文件.我如何使用它来查找特定驱动器中使用的属性文件类型.

例如:
在cmd中,我们可以使用此命令查找给定驱动器的文件属性

  1. attrib *.*

谢谢你的帮助

我尝试了bat文件(没有检查细节),它似乎对我很好.我注意到,如果你没有用引号括起文件路径,它会立即关闭 – 例如“文件”.例:
  1. Name of the file: path\file.txt // this will close immediately
  2. Name of the file: "path\file.txt" // now it will stay open and display the result

这有望解决您的问题.

就您在EDIT中的问题而言,一个简单的选择是迭代文件列表并在每个文件上执行批处理.

batch1.bat:(%1引用第一个命令行参数)

  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. echo %1
  5. set atname=%1
  6.  
  7. for %%i in ("%atname%") do set attribs=%%~ai
  8. set attrib1=!attribs:~0,1!
  9. cls
  10. if %attrib1% equ d echo Directory
  11. if %attrib2% equ r echo Read Only
  12. if %attrib3% equ a echo Archived
  13. if %attrib4% equ h echo Hidden
  14. if %attrib5% equ s echo System File
  15. if %attrib6% equ c echo Compressed File
  16. if %attrib7% equ o echo Offline File
  17. if %attrib8% equ t echo Temporary File
  18. if %attrib9% equ l echo Reparse point
  19. echo.
  20. echo.

接下来,生成给定路径中所有文件的列表(比如’包含所有子文件夹的’文件夹’):

  1. dir /s /b folder > ListOfFiles.txt

main.bat(逐行读取ListOfFiles.txt并将每行传递给batch1.bat作为命令行参数):

  1. @echo off
  2. for /f "tokens=*" %%l in (ListOfFiles.txt) do (batch1.bat %%l)

然后,从cmd:

  1. main.bat >> output.txt

最后一步生成一个包含完整结果的输出文件.当然,这可以通过更精细(也可能更短)的方式完成,但这是您可以采取的一个明显方向.

猜你在找的Windows相关文章