找人写个Windows下用的批处理

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:56:35
目的是更改盘符,
比如把D改成Z,然后再把E改成D.
@echo off
set old=D:
set new=Z:
pushd %new% 2>nul && echo %new%盘已经存在! && pause && goto :eof
for /f %%i in ('mountvol %old% /l') do set "vol=%%i"
mountvol %old% /d
mountvol %new% %vol%
popd
这个不能用,不知道我的机器却文件还是此批处理有问题.

我试验了一下,楼主的批处理没有问题!
有可能操作系统的问题。
我的是Windows XP Profession sp2
如果还怀疑有问题,楼主可以逐条命令测试一下,其中的变量需要手工替换一下。

十分感谢楼主提供这些批处理,我从中大有收获。

你这分我想要了,这样我给你把这个批处理解释一下吧。

:: 说明,我这里用::表示注释了

@echo off
:: 去掉回显

set old=D:
:: 设置变量old

set new=Z:
:: 设置变量new

pushd %new% 2>nul && echo %new%盘已经存在! && pause && goto :eof
:: 检查 new 盘符是否存在,如果存在,则结束
:: 上面的 && 符号,是顺序执行,在前面成功后,才会继续后面的命令。
:: 也就是 说new盘符存在,才能 把 这个路径pushd到内存中。
:: 这里pushd应该只是一个校验,要的就是让这个命令失败后继续,成功则跳过后面的命令直到结束

for /f %%i in ('mountvol %old% /l') do set "vol=%%i"
:: for 循环中,/f 参数表示in 后面的参数是一个整体,而不是多个参数
:: 参见 "for /? "输出第87-89行
:: mountvol %old% /l 命令给出old盘符的对应的设备文件,通常只有一个
:: 上面的循环,最终实现的是:
:: 把mountvol %old% /l命令的输出,赋给vol变量

mountvol %old% /d
:: 删除old盘符

mountvol %new% %vol%
:: 把vol设备文件对应的盘符(即原old盘)设置新的盘符new

po