![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 06:27 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]如何获取硬盘最后一个分区,并建立文件夹? |
| 可打印版本 1,091 / 12 |
| 第1楼 enginex | 发表于 2008-08-11 09:20 |
| 新手上路 发帖 2 积分 6 | |
|
[求助]如何获取硬盘最后一个分区,并建立文件夹? 如题;我想知道如何获取硬盘上的最后一个分区;然后建立一个文件夹;西谢谢大家帮忙啦~~
|
|
| 第2楼 HAT | 发表于 2008-08-11 10:00 |
| 版主 发帖 5,017 积分 9,023 | |
| 第3楼 enginex | 发表于 2008-08-11 10:04 |
| 新手上路 发帖 2 积分 6 | |
|
谢谢楼上的老大~~3Q~~
|
|
| 第4楼 keen | 发表于 2008-08-16 17:07 |
| 初级用户 发帖 29 积分 58 | |
|
2楼给出的答案就是牛!
|
|
| 第5楼 181801669 | 发表于 2008-08-16 21:42 |
| 初级用户 发帖 27 积分 58 | |
|
又学到了一点东东
|
|
| 第6楼 kennyfan | 发表于 2008-08-17 12:28 |
| 中级用户 发帖 112 积分 259 | |
|
这点新东西有点意思!
|
|
| 第7楼 borly | 发表于 2008-08-17 14:51 |
| 初级用户 发帖 7 积分 114 | |
|
二楼不愧是金牌会员,批处理太捧了.
|
|
| 第8楼 haiou327 | 发表于 2008-08-17 20:41 |
| 高级用户 发帖 348 积分 713 | |
|
wmic真是强大!!!!!!
|
|
| 第9楼 23112656 | 发表于 2008-08-18 22:07 |
| 中级用户 发帖 99 积分 220 | |
|
: by Herbert Kleebauer
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @echo off echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com set /p password=Enter password:<nul for /f "tokens=*" %%i in ('in.com') do set password=%%i pause del in.com echo. echo The Password is:"%password%" pause 中的 echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com 这一句问了一下我的老师;他给我讲解是这样的:我觉得更清楚更容易理解些; 拿出来分享一下 这个例子中的文件名是加了单引号,这就意味着这是一个外部命令, 也就是说,它是要被执行的。 in.com经过反汇编后,代码如下: 00000000: 685031 push 3150 00000003: 58 pop ax ; AX=3150 00000004: 353030 xor ax,3030 ; AX=0160 00000007: 50 push ax 00000008: 5B pop bx ; BX=0160 00000009: 50 push ax 0000000A: 5A pop dx ; DX=0160 0000000B: 42 inc dx 0000000C: 42 inc dx 0000000D: 42 inc dx ; DX=0163 0000000E: 666823622323 push 23236223 00000014: 6658 pop eax ; EAX=23236223 00000016: 662D56406024 sub eax,24604056 ; EAX=FEC321CD 0000001C: 6650 push eax 0000001E: 665D pop ebp ; EBP=FEC321CD 00000020: 66332F xor ebp,dword ptr [bx] ; EBP=EBP ^ [0160] 00000023: 66312F xor dword ptr [bx],ebp ; [0160]=FEC321CD ; +0160 CD ; +0161 21 ; +0162 C3 ; +0163 FE 其中+0160 与 +0161中的两个字节CD 21反汇编出来就是int 21h指令 +0162中的C3反汇编出来就是ret指令 最后那个+163中的FE是DOS输入功能0Ah的参数(前面的DX=0163就是指向了这个FE), 表示最多允许输入254个字符(包括回车在内) 00000026: 352B2B xor ax,2B2B ; AX=0AE6,其中0Ah是DOS功能号, ; E6没有用处 00000029: 7535 jnz 00000060 ; 这里肯定会发生跳转,相当于jmp 160 0000002B: 78 ; 最后的78无用 0000002C: 0D ; 0D与0A是echo时自动 0000002D: 0A ; 产生的回车换行符 程序跳转到160后,就会执行以下指令: int 21h ; 此时AH=0Ah, DX=0163h, 因此执行DOS的输入功能, ; 输入内容自动保存到+165开始的缓冲区中,而for循环会把各个字符逐个读出 ret ; 程序返回到操作系统,自动结束 总结一下,这个in.com的作用是通过键盘输入一串字符,长度不超过254个(含回车)。 这个批处理还是比较巧妙的,它用一串可显示的字符串构造了一个可执行代码,实现了 键盘输入功能,配合for循环使得在批处理中可以实现不回显输入。 P.S.: 根据分析,这个批处理中的echo语句所包含的一堆乱码里的最后 那个字符(即>前面++u5x中的x)可以删除不要。也可就是说, echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com 可以改成 echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>in.com 以上为网上找的资料.但还是看不懂...郁闷啊...谁能看懂就帮忙解释一下啊 |
|
| 第10楼 wangwei4106 | 发表于 2008-08-19 11:11 |
| 新手上路 发帖 8 积分 15 | |
|
@echo off
for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do ( if exist %%i:\nul ( for /f "tokens=3" %%j in ('dir /-c %%i:\') do set freesize=%%j set last=%%i if not "!freesize!"=="0" goto last_drive ) ) goto :eof :last_drive echo 最后一个分区是 %last% md %last%:\文件夹 pause |
|
| 第11楼 yeke | 发表于 2009-08-21 04:05 |
| 初级用户 发帖 13 积分 25 | |
|
谢谢,好代码,收下了
|
|
| 第12楼 marschant | 发表于 2009-08-22 04:05 |
| 新手上路 发帖 10 积分 12 | |
|
谢谢,好代码,收下了
|
|
| 第13楼 marschant | 发表于 2009-08-22 04:06 |
| 新手上路 发帖 10 积分 12 | |
|
谢谢,好代码,收下了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |