找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19889|回复: 4

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

[复制链接]
发表于 2023-7-26 20:10:45 | 显示全部楼层 |阅读模式
本帖最后由 风在吹着 于 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"了,如何顺延到下个盘符?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-7-26 20:22:32 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2023-7-27 19:16:02 | 显示全部楼层
回复 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.                         )
复制代码
发表于 2023-7-28 08:52:59 | 显示全部楼层
回复 3# 风在吹着


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

评分

参与人数 1技术 +1 收起 理由
风在吹着 + 1 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2023-7-30 20:23:42 | 显示全部楼层
回复 4# Batcher 谢谢,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:37 , Processed in 0.018543 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表