标题: [文本处理] [已解决]批处理diskpart怎样在DISK不存在时不显示任何结果? [打印本页]
作者: 风在吹着 时间: 2023-3-4 21:19 标题: [已解决]批处理diskpart怎样在DISK不存在时不显示任何结果?
- echo off
-
- echo list disk > diskpart.txt
-
- diskpart /s diskpart.txt
-
- echo sel disk 0 > diskpart.txt
-
- echo detail disk >> diskpart.txt
-
- diskpart /s diskpart.txt>DiskInfo.txt
-
- for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型 :"') do (
- set "str=%%a"
- )
- if /i "%str%" equ "NVMe" (
- set str=Disk0 Type : SSD
- )
- if /i "%str%" equ "USB" (
- set str=Disk0 Type : USB
- )
- if /i "%str%" equ "SATA" (
- set str=Disk0 Type : HDD
- )
- echo %str%
-
-
- echo sel disk 1 > diskpart.txt
-
- echo detail disk >> diskpart.txt
-
- echo diskpart /s diskpart.txt>DiskInfo.txt
-
- diskpart /s diskpart.txt>DiskInfo.txt
-
- for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型 :"') do (
- set "str=%%a"
- )
- if /i "%str%" equ "NVMe" (
- set str=Disk1 Type : SSD
- )
- if /i "%str%" equ "USB" (
- set str=Disk1 Type : USB
- )
- if /i "%str%" equ "SATA" (
- set str=Disk1 Type : HDD
- )
- echo %str%
-
-
- echo sel disk 2 > diskpart.txt
-
- echo detail disk >> diskpart.txt
-
- echo diskpart /s diskpart.txt>DiskInfo.txt
-
- diskpart /s diskpart.txt>DiskInfo.txt
-
- for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型 :"') do (
- set "str=%%a"
- )
- if /i "%str%" equ "NVMe" (
- set str=Disk2 Type : SSD
- )
- if /i "%str%" equ "USB" (
- set str=Disk2 Type : USB
- )
- if /i "%str%" equ "SATA" (
- set str=Disk2 Type : HDD
- )
- echo %str%
- if exist diskpart.txt del /f /q diskpart.txt
- if exist DiskInfo.txt del /f /q DiskInfo.txt
- pause
复制代码
为什么我这个代码DISK 2不存在时还是显示上一步的结果?我需要当DISK 2或 DISK 1不存在时,不显示任何结果。
作者: newswan 时间: 2023-3-4 21:37
变量使用前,先清除
作者: 77七 时间: 2023-3-4 21:42
本帖最后由 77七 于 2023-3-4 22:13 编辑
- @echo off
- echo list disk > diskpart.txt
- diskpart /s diskpart.txt
- for %%k in (0 1 2) do (
- echo sel disk %%k > diskpart.txt
- echo detail disk >> diskpart.txt
- if %%k neq 0 (
- diskpart /s diskpart.txt>DiskInfo.txt
- )
- diskpart /s diskpart.txt>DiskInfo.txt
- for /f "tokens=3" %%a in ('type DiskInfo.txt ^| find "类型 :"') do (
- if /i "%%a" equ "NVMe" (
- echo Disk%%k Type : SSD
- ) else if /i "%%a" equ "USB" (
- echo Disk%%k Type : USB
- ) else if /i "%%a" equ "SATA" (
- echo Disk%%k Type : HDD
- )
- )
- )
- if exist diskpart.txt del /f /q diskpart.txt
- if exist DiskInfo.txt del /f /q DiskInfo.txt
- pause
复制代码
我帮你把代码整合了一下,试试能行吗22:13重新编辑,重新复制...
作者: 风在吹着 时间: 2023-3-4 21:54
回复 3# 77七 但是for /f没有执行
作者: 77七 时间: 2023-3-4 22:02
本帖最后由 77七 于 2023-3-4 22:14 编辑
回复 4# 风在吹着
53分钟编辑了一次,重新复制代码,我对diskpart 这个命令不熟悉,如果不行,提供详细报错信息,或者就按2楼所说在你的代码第二个for、第三个for语句 前加个 set "str="
22:13 重新编辑,写错了一个数字
作者: newswan 时间: 2023-3-4 22:05
本帖最后由 newswan 于 2023-3-4 22:11 编辑
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409570
diskpart 麻烦,可以换powershell
http://www.bathome.net/thread-65340-1-1.html
作者: 风在吹着 时间: 2023-3-4 22:15
回复 5# 77七 可以了,感谢。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |