微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用batch file进行条件重命名

我想用batch file重命名我的计算机上的特定目录中的两个文件。 问题是,我想,如果可以这样做的标准批处理命令,有条件地重命名文件。 具体来说,我的例子如下:

我有两个“主机”文件位于C: Windows System32 drivers etc; 一个被命名为“主机”,另一个命名为“hosts_X”,一个“主机”文件,其中包含特定的指令,我需要在特定情况下处于活动状态。

我想在这两个“主机”文件之间切换:有两种情况:情况“A”中有一个“hosts”文件一个“hosts_X”文件,情况“B”中原来的“hosts”文件重命名为“hosts_Y”,“hosts_X”重命名为“hosts”。

有没有可能有一个单一的batch file,有条件地重命名这两个文件? 例如,如果有一个名为“hosts”的文件一个名为“hosts_x”的文件,则将主机重命名为“hosts_y”和“hosts_x”,如果存在名为“hosts”的文件和名为“hosts_y”的文件,将“hosts”重命名为“hosts_x”和“hosts_y”为“hosts”?

命令行(或batch file)重命名文件夹中的所有文件(Windows)

在bash脚本中获取grandparent目录 – 重命名文件path中的目录

通过删除linux中的url参数来重命名文件

batch file:当另一个.xlsx文件存在于同一文件夹中时如何重命名.xls文件

在Linux中删除10个字符的文件

感谢您的任何信息和帮助!

命令提示符/批处理 – 使用顺序编号重命名多个文件

通过批量重命名文件名中间删除文本

使用BASH中的特殊字符从文件名中删除子string

用感叹号和&符号replace使用批处理的文件名中的string

批量重命名多个文件

我总结了Liturgist和Alex K.提出的有用的建议,并回答了这个问题,从问题清单中删除,没有答案。

根据Liturgist提供的想法批处理文件

@echo off if not "%~1" == "" ( if exist "C:WindowsSystem32driversetchosts_%~1" ( copy /Y "C:WindowsSystem32driversetchosts_%~1" C:WindowsSystem32driversetchosts ) else ( echo %~f0 %* echo. echo Error: There is no file C:WindowsSystem32driversetchosts_%~1 echo. pause ) ) else ( echo %~f0 echo. echo Please call this batch file with either X or Y as parameter. echo. pause )

必须使用一个参数调用批处理文件,该参数指定哪些主机文件应至少在目录C:WindowsSystem32driversetc hosts_X和hosts_Y处于活动状态。

参数应该是X或Y

如果参数未指定导致出现错误消息的现有主机文件,则会进行额外的文件检查。

如果没有参数调用批处理文件,也会有一个消息输出

根据Alex K.提供的想法批处理文件

@echo off if exist C:WindowsSystem32driversetchosts_X ( ren C:WindowsSystem32driversetchosts hosts_Y ren C:WindowsSystem32driversetchosts_X hosts echo hosts_X is Now the active hosts file. ) else ( ren C:WindowsSystem32driversetchosts hosts_X ren C:WindowsSystem32driversetchosts_Y hosts echo hosts_Y is Now the active hosts file. ) echo. pause

此批处理文件根据当前存在的模板主机文件切换活动主机文件

在hosts_X存在的情况下, hosts被重命名为hosts_Y , hosts_X被重命名为hosts 。

否则, hosts_Y已存在, hosts将重命名为hosts_X , hosts_Y将重命名为hosts 。

在目录中不应该有同时存在的hosts , hosts_X和hosts_Y ,因为这会导致文件重命名失败。 但同时存在的所有3个文件不应该是用于此任务的用例。 (使用move /Y代替ren ,第二个文件名也有完整的路径在这里不会有帮助)。

为了理解使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面

call /? …解释%~1 , %~f0和%* 。

copy /?

echo /?

if /?

ren /?

pause /?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐