@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
为了更容易,这里有一个批处理文件来做到这一点。简单地具有编辑"whereveryouwant"
后运行thisbatch 11
(或22
等)为00的父目录,11等的名称
它确实被检查所提供的参数是有效的,回声的错误消息的第一件事如果无效则暂停。
然后它查找x11..x44。如果发现说x33
,它
- 改变
00
到33
- 变化(比如说)
11
到00
- 改变
x33
(虚拟),以x11
- 退出
如果找不到x33
的纠结是的00
的条目。如果提供00
作为参数,则它会查找x11..x44。如果发现说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
基本上相同的程序,不同之处在于如果不提供或提供无效选择中的选择时,用户将被提示输入新的选择。只需按此提示的回车键即可终止程序。
如果这是快捷方式运行,它可能是一个想法,与EXIT
您好,感谢您都为你的答案全部更换
GOTO :EOF
命令。我已经尝试了彼得的代码,但我得到一个无效的参数(肯定我有一个名为k的文件夹,并在里面00,11,22等..所以我改变“whereveryouwant”与“k”)..我要去现在尝试第一个示例 – Francis您可能需要使用'C:\ k' - 完整路径。当你运行批处理时,你需要运行'thisbatch 11'(或者22,或者33或者44或者00)。如果你没有给它一个参数,或者给它一个参数,而不是这五个参数之一,它会显示'无效的参数' – Magoo
好吧,我花了3个小时,尝试了我认为的一切,并使用Google搜索代码,但无法使其工作...如果任何人都可以带领我前进,这将是伟大的..(也是头痛的补救措施,请!) – Francis