重命名的批处理文件 - 使用if Exist没有完整路径?

时间:2014-07-13 03:33:48

标签: batch-file if-statement

我正在尝试编写代码来检查某些文件是否有名为filename.bkp的备份。如果是这样,代码应该将原始文件重命名为filename.alt,然后重命名备份文件名。如果没有filename.bkp,我希望它将filename重命名为filename.bkp,然后将filename.alt重命名为filename。

我写这篇文章是为了与朋友分享,但我不知道他的系统文件结构。我正试图从批处理的当前目录中编写它,就像我之前重命名脚本一样。但它似乎并不像我认为应该如何工作。我的脚本目前什么也没做。我很确定我唯一的问题是不知道如何在没有完整路径的情况下调用文件!

到目前为止,这是我的代码。

@if EXIST "left4dead2\pak01_dir.vpk.bkp" (for /r "left4dead2\" %%i in ("pak01_dir.vpk") do ren "%%~fi" "pak01_dir.vpk.alt" for /r "left4dead2\" %%i in ("pak01_dir.vpk.bkp") do ren "%%~fi" "pak01_dir.vpk") ELSE (for /r "left4dead2\" %%i in ("pak01_dir.vpk") do ren "%%~fi" "pak01_dir.vpk.bkp" for /r "left4dead2\" %%i in ("pak01_dir.vpk.alt") do ren "%%~fi" "pak01_dir.vpk")
@if EXIST "left4dead2\pak01_dir.vpk.bkp" (echo "Ready for Online Heads Will Roll Match") ELSE (echo "Returned to Default")

1 个答案:

答案 0 :(得分:1)

for /r在目标中需要wildcard 并且您的命令没有在一行中用&分隔,这是一个错误 将其拆分为多行批处理文件时,它看起来像这样。

您使用它的方式批处理文件与left4dead2文件夹位于同一文件夹中。

@echo off
pushd "left4dead2"
if EXIST "pak01_dir.vpk.bkp" (
   for /r %%i in ("pak01_dir.vpk?")     do ren "%%i" "pak01_dir.vpk.alt" 
   for /r %%i in ("pak01_dir.vpk.bkp?") do ren "%%i" "pak01_dir.vpk"
) ELSE (
   for /r %%i in ("pak01_dir.vpk?")     do ren "%%i" "pak01_dir.vpk.bkp" 
   for /r %%i in ("pak01_dir.vpk.alt?") do ren "%%i" "pak01_dir.vpk"
)

if EXIST "pak01_dir.vpk.bkp" (
   echo "Ready for Online Heads Will Roll Match"
) ELSE (
   echo "Returned to Default"
)
popd