[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]批处理如何排除指定磁盘格式化?

本帖最后由 风在吹着 于 2023-7-30 20:25 编辑
  1. @echo off
  2. :1
  3. echo list disk > diskpart.txt
  4. diskpart /s diskpart.txt
  5. set /p i=请输入选择的磁盘(如0):
  6. echo %i%|findstr /x "[0-3]" >nul||(
  7.         echo 输入错误 &pause>nul
  8.         goto :1)
  9. echo sel disk %i% > diskpart.txt
  10. echo clean >> diskpart.txt
  11. echo convert gpt >> diskpart.txt
  12. echo create partition primary >> diskpart.txt
  13. echo format quick fs=ntfs >> diskpart.txt
  14. echo assign letter="D" >> diskpart.txt
  15. diskpart /s diskpart.txt
  16. if exist  diskpart.txt del /f /q diskpart.txt
  17. pause
复制代码
我在U盘上运行,如何防止手滑把U盘也格式化了?还有如果盘符已经存在"D"了,如何顺延到下个盘符?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 1# 风在吹着
  1. @echo off
  2. for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  3.     if not exist %%i:\ (
  4.         set "DriveLetter=%%i"
  5.         goto :Next
  6.     )
  7. )
  8. :Next
  9. echo 第一个可用盘符是%DriveLetter%
  10. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher 感谢大佬的回答,我被assign letter迷惑了,其实不给它指定驱动器号就会顺延到下一个盘符了。去掉 letter就能达到我想要的效果。还有一个问题就是我在U盘上运行,如何防止误操作把U盘也格式化了?
  1. @echo off
  2. :1
  3. echo list disk > diskpart.txt
  4. diskpart /s diskpart.txt
  5. set /p i=请输入选择的磁盘(如0):
  6. echo %i%|findstr /x "[0-3]" >nul||(
  7.         echo 输入错误 &pause>nul
  8.         goto :1)
  9. echo sel disk %%i > diskpart.txt
  10. echo detail disk >> diskpart.txt
  11. if %%i neq 0 (
  12. diskpart /s diskpart.txt>DiskInfo.txt
  13. )
  14. diskpart /s diskpart.txt>DiskInfo.txt
  15. for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型   :"') do (
  16. if "%%a" equ "USB" echo ERROR && goto :ERROR
  17.                         )
  18. echo clean >> diskpart.txt
  19. echo convert gpt >> diskpart.txt
  20. echo create partition primary >> diskpart.txt
  21. echo format quick fs=ntfs >> diskpart.txt
  22. echo assign >> diskpart.txt
  23. diskpart /s diskpart.txt
  24. if exist  diskpart.txt del /f /q diskpart.txt
  25. if exist  DiskInfo.txt del /f /q DiskInfo.txt
  26. :ERROR
  27. color 4f
  28. @echo.
  29. @echo An error has been detected.
  30. @echo.
  31. pause >nul
  32. goto :ERROR
  33. pause
复制代码
我加入这段后为什么我不管选择哪个盘都去ERROR那里,麻烦指点一下,谢谢
  1. echo sel disk %%i > diskpart.txt
  2. echo detail disk >> diskpart.txt
  3. if %%i neq 0 (
  4. diskpart /s diskpart.txt>DiskInfo.txt
  5. )
  6. diskpart /s diskpart.txt>DiskInfo.txt
  7. for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型   :"') do (
  8. if "%%a" equ "USB" echo ERROR && goto :ERROR
  9.                         )
复制代码

TOP

回复 3# 风在吹着


第14行用的是%i%
第18、21行用的是%%i
请先把这个错误改掉再试试
1

评分人数

    • 风在吹着: 感谢给帖子标题标注[已解决]字样技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher 谢谢,

TOP

返回列表