@ECHO OFF
SETLOCAL
cd /d "whereveryouwant"
FOR %%i IN (00 11 22 33 44) DO IF .%1==.%%i GOTO swap
ECHO invalid parameter&pause&GOTO :eof
:swap
FOR %%i IN (11 22 33 44) DO IF EXIST x%%i (
REN 00 %%i
IF %1==00 REN x%%i 00&GOTO :EOF
REN %1 00
REN x%%i x%1
GOTO :eof
)
IF %1==00 GOTO :EOF
REN 00 x%1
REN %1 00
GOTO :EOF
为了使它更容易,这里有一个批处理文件。编辑为 00, 11 等的父目录名后直接运行thisbatch 11
(或22
等)即可。"whereveryouwant"
它所做的第一件事是检查提供的参数是否有效,并回显错误消息,如果无效则暂停。
然后它寻找 x11..x44。如果它找到 say x33
,它
- 更改
00
为33
- 改变(比方说
11
)00
- 将
x33
(假人)更改为x11
- 退出
如果找不到x33
扭结用于00
. 如果00
作为参数提供,则它会查找 x11..x44。如果它找到 say x33
,它
但如果没有找到“x”目录,它什么也不做。
因此,输入“00”将恢复原始目录集 -00
作为虚拟。
我一直使用“ GOTO :EOF
” - 这是退出批次的正常方法。在您的情况下,您可能需要更改其中的每一个EXIT
以关闭CMD
窗口。
修订以允许用户输入
@ECHO OFF
SETLOCAL
CD /d "c:\wherever\your\directories\are"
SET selection=%1
IF DEFINED selection GOTO validate
:getfromuser
SET "selection="
SET /p selection="Please enter selection 11..44 : "
IF NOT DEFINED selection GOTO :eof
:validate
FOR %%i IN (00 11 22 33 44) DO IF .%selection%==.%%i GOTO swap
ECHO invalid selection %selection%&GOTO getfromuser
:swap
FOR %%i IN (11 22 33 44) DO IF EXIST x%%i (
REN 00 %%i
IF %selection%==00 REN x%%i 00&GOTO :EOF
REN %selection% 00
REN x%%i x%selection%
GOTO :eof
)
IF %selection%==00 GOTO :EOF
REN 00 x%selection%
REN %selection% 00
GOTO :EOF
本质上是相同的程序,除了如果未提供选择或提供了无效选择,将提示用户进行新选择。只需按回车键响应此提示将终止程序。
如果这是从快捷方式运行的,则将所有GOTO :EOF
命令替换为EXIT