标题: [系统相关] 根据磁盘里指定的文件夹来修改磁盘盘符的批处理 [打印本页]
作者: wangplay163 时间: 2008-3-31 12:25 标题: 根据磁盘里指定的文件夹来修改磁盘盘符的批处理
因为
网吧要用虚拟盘 怕客户机有U盘等会导致盘符不对
故在每个虚拟盘里建了个文件夹 想根据虚拟盘里的文件夹来指定修改盘符。。。
如:连接上的盘符为 G , H , I 等 ,在 G , H, I 中分别已存在不同的文件夹(G盘里为O ,H盘里为P,I 盘里为Q 以此类推。。。) ,只是想让磁盘根据文件夹名,来修改成与此文件夹同名的盘符!
或者直接 按 虚拟盘里的文件夹来 指定 修改盘符
详细说明:
我用 Microsoft iSCSI Initiator 连接 ISCSI盘后(客户机上本身有 C D E F盘) 在系统上出了 G,H,I,G,K,5个磁盘
想用批处理把它们改称 O,P,Q,R,S 盘
但考虑到客户机会有U盘之类的。会打乱出盘的顺序。(客户机上本身有 C D E F盘)
就在 G,H,I,G,K5个虚拟盘中分别建立的O,P,Q,R,S 5个文件夹
其中G,H,I,G,K5个虚拟盘中都有大量的游戏,就想让批处理扫描所有的磁盘,如果某个磁盘中 含有 O或P 或 Q或 R 或 S文件夹 ,就把此磁盘的盘符修改成含有相应文件夹名的盘符
例如 H盘中含有 O这个文件夹 就把此盘符改称 O
批处理 在客户机上 点机游戏时,运行批处理
之前光着急了~!打错了~!~
就是 G盘按照里面的文件夹O 把盘符改称O盘
请高手出手相助!
[ 本帖最后由 wangplay163 于 2008-3-31 16:11 编辑 ]
作者: wangplay163 时间: 2008-3-31 12:40
时间紧迫~!
老大们帮下忙了~
游戏服务器都停了N天了
作者: wangplay163 时间: 2008-3-31 12:48
大家都去吃饭了吧!~!!!
作者: 随风 时间: 2008-3-31 15:17
不太明白你的意识,既然g盘里的文件夹是g,那还修改什么呀?
作者: wangplay163 时间: 2008-3-31 15:35
汗~~光着急了~!~
意思错了!~!~!
作者: wangplay163 时间: 2008-3-31 15:38
感谢 随风 大大~提醒!!!!!!!!!!!!!!!
作者: 随风 时间: 2008-3-31 15:52
不知道你是不是这个意识
g盘里只有一个文件夹,以它的名字替换g盘盘符。
:- @echo off
- set x=g
- for /f "delims=" %%a in ('dir/b/ad %x%:\') do set m=%%~a
- for /f %%i in ('mountvol %x%: /L') do (
- mountvol %x%: /d && mountvol %m%: %%i
- )
- echo 操作成功,按任意键退出.
- pause
复制代码
[ 本帖最后由 随风 于 2008-3-31 17:40 编辑 ]
作者: wangplay163 时间: 2008-3-31 16:06
我的意思是
我用 Microsoft iSCSI Initiator 连接 ISCSI盘后(客户机上本身有 C D E F盘) 在系统上出了 G,H,I,G,K,5个磁盘
想用批处理把它们改称 O,P,Q,R,S 盘
但考虑到客户机会有U盘之类的。会打乱出盘的顺序。(客户机上本身有 C D E F盘)
就在 G,H,I,G,K5个虚拟盘中分别建立的O,P,Q,R,S 5个文件夹
其中G,H,I,G,K5个虚拟盘中都有大量的游戏,就想让批处理扫描所有的磁盘,如果某个磁盘中 含有 O或P 或 Q或 R 或 S文件夹 ,就把此磁盘的盘符修改成含有相应文件夹名的盘符
例如 H盘中含有 O这个文件夹 就把此盘符改称 O
批处理 在客户机上 点机游戏时,运行批处理
[ 本帖最后由 wangplay163 于 2008-3-31 16:08 编辑 ]
作者: wangplay163 时间: 2008-3-31 16:09
随风 巡查
辛苦了
作者: 随风 时间: 2008-3-31 16:13
这么理解吧
循环ghijk这5个盘符根目录下的所有文件夹,当在某盘符下发现opqrs中的任何一个文件夹时,就以此文件夹名更改当前盘符?
是这样么?
作者: wangplay163 时间: 2008-3-31 16:22
原帖由 随风 于 2008-3-31 16:13 发表
这么理解吧
循环ghijk这5个盘符根目录下的所有文件夹,当在某盘符下发现opqrs中的任何一个文件夹时,就以此文件夹名更改当前盘符?
是这样么?
就是
循环的 盘符范围在大点~~!~
主要考虑到客户机上有人用 U盘
这样 会打乱 ISCSI出盘的顺序
比如我现在的 系统本身有 CDEF盘 出了ISCSI盘后 ISCSI盘为GHIJK
但是有U盘插入后U盘出的是G或H等 ISCSI出的盘会变成IJKLM(向后推移了)
现在想要的就是让批处理扫描现在系统上存在的盘(可排除系统下的CDEF盘)某盘符下发现opqrs中的任何一个文件夹时,就以此文件夹名更改当前盘符
谢谢随风 大大了~!~~~~~~!~!
作者: 随风 时间: 2008-3-31 16:26
:- @echo off
- for %%i in (g h i j k) do (
- cd/d %%i:
- for %%a in (o p q r s) do if exist %%a call :loop %%i %%a
- )
- pause
- exit
- :loop
- for /f %%j in ('mountvol %~1: /L') do (
- mountvol %~1: /d && mountvol %~2: %%j
- )
- echo 以将 %~1 盘改为 %~2 盘
- goto :eof
复制代码
[ 本帖最后由 随风 于 2008-3-31 17:38 编辑 ]
作者: wangplay163 时间: 2008-3-31 16:30
测试中
感谢 随风 大大了~!!!!!!!!!!!
作者: 随风 时间: 2008-3-31 16:32
又精简了一下
但是若根目录下出现不带后缀名的文件名为o p q r s的也会更改盘符。
[ 本帖最后由 随风 于 2008-3-31 16:35 编辑 ]
作者: wangplay163 时间: 2008-3-31 16:36
提示这是什么意思?
作者: 随风 时间: 2008-3-31 16:37
呵呵,匆忙中打错了,应该是 delims=
另:代码以更改,你试试。。
作者: wangplay163 时间: 2008-3-31 16:38
我把机器重起下试试看~!~
辛苦 你了
作者: wangplay163 时间: 2008-3-31 16:55
这是怎么搞的啊~!?
作者: wangplay163 时间: 2008-3-31 16:57
D:\pingtai>for %i in (g h i j k) do (
cd/d %i:
for %a in (o p q r s) do if exist %a call :loop %i %a
)
D:\pingtai>(
cd/d g:
for %a in (o p q r s) do if exist %a call :loop g %a
)
G:\>if exist o call :loop g o
G:\>if exist p call :loop g p
G:\>if exist q call :loop g q
G:\>if exist r call :loop g r
G:\>for /F %j in ('mountvol g /L') do (mountvol g /d && mountvol r %j )
G:\>(mountvol g /d && mountvol r 系统找不到指定的文件。 )
系统找不到指定的文件。
G:\>echo 以将 g 盘改为 r 盘
以将 g 盘改为 r 盘
G:\>goto :eof
G:\>if exist s call :loop g s
G:\>(
cd/d h:
for %a in (o p q r s) do if exist %a call :loop h %a
)
H:\>if exist o call :loop h o
H:\>if exist p call :loop h p
H:\>if exist q call :loop h q
H:\>for /F %j in ('mountvol h /L') do (mountvol h /d && mountvol q %j )
H:\>(mountvol h /d && mountvol q 系统找不到指定的文件。 )
系统找不到指定的文件。
H:\>echo 以将 h 盘改为 q 盘
以将 h 盘改为 q 盘
H:\>goto :eof
H:\>if exist r call :loop h r
H:\>if exist s call :loop h s
H:\>(
cd/d i:
for %a in (o p q r s) do if exist %a call :loop i %a
)
I:\>if exist o call :loop i o
I:\>if exist p call :loop i p
I:\>if exist q call :loop i q
I:\>if exist r call :loop i r
I:\>if exist s call :loop i s
I:\>for /F %j in ('mountvol i /L') do (mountvol i /d && mountvol s %j )
I:\>(mountvol i /d && mountvol s 系统找不到指定的文件。 )
系统找不到指定的文件。
I:\>echo 以将 i 盘改为 s 盘
以将 i 盘改为 s 盘
I:\>goto :eof
I:\>(
cd/d j:
for %a in (o p q r s) do if exist %a call :loop j %a
)
J:\>if exist o call :loop j o
J:\>if exist p call :loop j p
J:\>if exist q call :loop j q
J:\>if exist r call :loop j r
J:\>if exist s call :loop j s
J:\>(
cd/d k:
for %a in (o p q r s) do if exist %a call :loop k %a
)
K:\>if exist o call :loop k o
K:\>if exist p call :loop k p
K:\>for /F %j in ('mountvol k /L') do (mountvol k /d && mountvol p %j )
K:\>(mountvol k /d && mountvol p 系统找不到指定的文件。 )
系统找不到指定的文件。
K:\>echo 以将 k 盘改为 p 盘
以将 k 盘改为 p 盘
K:\>goto :eof
K:\>if exist q call :loop k q
K:\>if exist r call :loop k r
K:\>if exist s call :loop k s
K:\>pause
请按任意键继续. . .
这是生成的信息
作者: 随风 时间: 2008-3-31 17:36
不好意识,忘了冒号了。
再试试。。。
:- @echo off
- for %%i in (g h i j k) do (
- for %%a in (o p q r s) do if exist %%i:\%%a\ call :loop %%i %%a
- )
- pause&exit
- :loop
- for /f %%j in ('mountvol %~1: /L') do (mountvol %~1: /d && mountvol %~2: %%j)
- echo 以将 %~1 盘改为 %~2 盘
- goto :eof
复制代码
[ 本帖最后由 随风 于 2008-3-31 17:50 编辑 ]
作者: wangplay163 时间: 2008-3-31 17:58
执行后所有盘都不见了
这是为什么啊
作者: wangplay163 时间: 2008-3-31 18:01
这是执行信息
E:\>for %i in (G H I J K L) do (
cd/d %i:
for %a in (O P Q R S T) do if exist %a call :loop %i %a
)
E:\>(
cd/d G:
for %a in (O P Q R S T) do if exist %a call :loop G %a
)
G:\>if exist O call :loop G O
G:\>if exist P call :loop G P
G:\>if exist Q call :loop G Q
G:\>if exist R call :loop G R
G:\>for /F %j in ('mountvol G: /L') do (mountvol G: /d && mountvol R: %j )
G:\>(mountvol G: /d && mountvol R: \\?\Volume{e704cf7a-fefe-11dc-bbb2-0019e072
64c0}\ )
当前目录无效。
G:\>echo 以将 G 盘改为 R 盘
以将 G 盘改为 R 盘
G:\>goto :eof
G:\>if exist S call :loop G S
G:\>if exist T call :loop G T
G:\>(
cd/d H:
for %a in (O P Q R S T) do if exist %a call :loop H %a
)
H:\>if exist O call :loop H O
H:\>if exist P call :loop H P
H:\>if exist Q call :loop H Q
H:\>for /F %j in ('mountvol H: /L') do (mountvol H: /d && mountvol Q: %j )
H:\>(mountvol H: /d && mountvol Q: \\?\Volume{e704cf7b-fefe-11dc-bbb2-0019e072
64c0}\ )
当前目录无效。
H:\>echo 以将 H 盘改为 Q 盘
以将 H 盘改为 Q 盘
H:\>goto :eof
H:\>if exist R call :loop H R
H:\>if exist S call :loop H S
H:\>if exist T call :loop H T
H:\>(
cd/d I:
for %a in (O P Q R S T) do if exist %a call :loop I %a
)
I:\>if exist O call :loop I O
I:\>if exist P call :loop I P
I:\>if exist Q call :loop I Q
I:\>if exist R call :loop I R
I:\>if exist S call :loop I S
I:\>for /F %j in ('mountvol I: /L') do (mountvol I: /d && mountvol S: %j )
I:\>(mountvol I: /d && mountvol S: \\?\Volume{e704cf7c-fefe-11dc-bbb2-0019e072
64c0}\ )
当前目录无效。
I:\>echo 以将 I 盘改为 S 盘
以将 I 盘改为 S 盘
I:\>goto :eof
I:\>if exist T call :loop I T
I:\>(
cd/d J:
for %a in (O P Q R S T) do if exist %a call :loop J %a
)
J:\>if exist O call :loop J O
J:\>if exist P call :loop J P
J:\>if exist Q call :loop J Q
J:\>if exist R call :loop J R
J:\>if exist S call :loop J S
J:\>if exist T call :loop J T
J:\>for /F %j in ('mountvol J: /L') do (mountvol J: /d && mountvol T: %j )
J:\>(mountvol J: /d && mountvol T: \\?\Volume{e704cf7d-fefe-11dc-bbb2-0019e072
64c0}\ )
当前目录无效。
J:\>echo 以将 J 盘改为 T 盘
以将 J 盘改为 T 盘
J:\>goto :eof
J:\>(
cd/d K:
for %a in (O P Q R S T) do if exist %a call :loop K %a
)
K:\>if exist O call :loop K O
K:\>if exist P call :loop K P
K:\>for /F %j in ('mountvol K: /L') do (mountvol K: /d && mountvol P: %j )
K:\>(mountvol K: /d && mountvol P: \\?\Volume{e704cf7e-fefe-11dc-bbb2-0019e072
64c0}\ )
当前目录无效。
K:\>echo 以将 K 盘改为 P 盘
以将 K 盘改为 P 盘
K:\>goto :eof
K:\>if exist Q call :loop K Q
K:\>if exist R call :loop K R
K:\>if exist S call :loop K S
K:\>if exist T call :loop K T
K:\>(
cd/d L:
for %a in (O P Q R S T) do if exist %a call :loop L %a
)
系统找不到指定的驱动器。
K:\>if exist O call :loop L O
K:\>if exist P call :loop L P
K:\>if exist Q call :loop L Q
K:\>if exist R call :loop L R
K:\>if exist S call :loop L S
K:\>if exist T call :loop L T
K:\>pause
请按任意键继续. . .
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |