标题: [特效代码] 识别硬盘数目然后跳转执行分区操作的批处理哪里出错了?求指点 [打印本页]
作者: lihui612ld 时间: 2018-11-16 23:44 标题: 识别硬盘数目然后跳转执行分区操作的批处理哪里出错了?求指点
- @echo off
- color 24
- del *txt
- for /f "tokens=2,3" %%a in (' "echo list disk | diskpart" ') do (
- if %%a==%%a set "num=%%a"
- )
- set /a "d=%num%"
- echo 有%d%个硬盘请确认
- set /a "f=%d%"-1
- for /l %%e in (0 1 %f%) do (
- partassist.exe /list:%e% /capacity /out:a.txt
- )
- for /f "skip=4 delims=|. tokens=2" %%p in (a.txt) do (
- echo %%p
- if %%p geq 60 goto aa
- if %%p lss 60 goto bb
-
- :aa ; 2分区方案
- echo 1
- pause
- goto eof
-
- :bb ;3分区方案
- echo 2
- pause
- goto eof
- )
复制代码
这段代码是用自动识别当前主机硬盘数目,用傲梅分区将硬盘容量输出到a.txt,然后用for读取a.txt里的内容获取硬盘容量并与60比较,然后跳转执行分区操作
作者: lihui612ld 时间: 2018-11-16 23:45
for /f "skip=4 delims=|. tokens=2" %%p in (a.txt) do (
echo %%p
if %%p geq 60 goto aa
if %%p lss 70 goto bb
:aa ; 2分区方案
echo 1
pause
goto eof
:bb ;3分区方案
echo 2
pause
goto eof
)
主要是这段代码无法正常 是不是因为for里面用了GOTO 命令直接跳出了循环
作者: lihui612ld 时间: 2018-11-17 01:03
想了一晚上 多个循环的搞不定 不只是goto的问题
作者: flashercs 时间: 2018-11-17 01:32
本帖最后由 flashercs 于 2018-11-17 01:34 编辑
bat的for跟其他语言不一样,for其实是一行命令;故for里面一定不能用goto
作者: lihui612ld 时间: 2018-11-17 01:38
回复 4# flashercs
我找了好久,其实是for循环嵌套造成的
作者: flashercs 时间: 2018-11-17 01:42
回复 5# lihui612ld - for /f "skip=4 delims=|. tokens=2" %%p in (a.txt) do (
- echo %%p
- if %%p geq 60 (
- call :aa
- ) else (
- call :bb
- )
- )
- exit /b
-
- REM 2分区方案
- :aa
- echo 1
- pause
- exit /b
-
- REM 3分区方案
- :bb
- echo 2
- pause
- exit /b
复制代码
作者: lihui612ld 时间: 2018-11-17 01:46
echo off
color 24
del *txt
for /f "tokens=2,3" %%a in (' "echo list disk | diskpart" ') do (
if %%a==%%a set "num=%%a"
)
set /a "d=%num%"
echo 有%d%个硬盘请确认
set /a "f=%d%"-1
for /l %%e in (0 1 %f%) do (
echo %%e>>b.txt
partassist.exe /list:%e% /capacity /out:a.txt
for /f "skip=4 delims=|. tokens=2" %%p in (a.txt) do (
echo %%p
echo %%e
pause
)
)
这是我改后的代码,for循环嵌套造成命令显示如下
F:\1Autoghost\PACMDforUSB>echo off
有3个硬盘请确认
167
0
请按任意键继续. . .
111
0
请按任意键继续. . .
465
0
请按任意键继续. . .
58
0
请按任意键继续. . .
167
1
请按任意键继续. . .
111
1
请按任意键继续. . .
465
1
请按任意键继续. . .
58
1
请按任意键继续. . .
作者: lihui612ld 时间: 2018-11-17 12:35
回复 6# flashercs
我用CALL 命令提示不能跳转 ,才发现没打 :
作者: lihui612ld 时间: 2018-11-17 12:37
回复 6# flashercs
如果我要在aa:下用到变量%%e有什么办法吗?
作者: flashercs 时间: 2018-11-17 15:01
本帖最后由 flashercs 于 2018-11-17 15:02 编辑
回复 9# lihui612ld
传递参数 call :aa %%e
aa下就是%1
作者: lihui612ld 时间: 2018-11-18 21:25
回复 10# flashercs
这里不懂 能说详细点吗?
作者: smss 时间: 2019-4-6 23:32
echo off
color 24
del *txt
for /f "tokens=2,3" %%a in (' "echo list disk | diskpart" ') do (
...
lihui612ld 发表于 2018-11-17 01:46
楼主解决了吗?还在寻找偷懒的路上越走越远?
作者: lihui612ld 时间: 2019-8-5 11:44
回复 12# smss
解决了,不过要创建文件
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |