我有一个场景,我的C:\ Windows \文件夹中有一个名为file.ini
的文件。
但我想创建一个批处理文件,将该文件保存到file_mr.ini
,然后将其重命名为file.ini。
所以它看起来像这样,基本上是一个开关:
C:\Windows\
- file.ini
C:\Windows\
- file_mr.ini -> file.ini
(keeping the file_mr.ini and not removing it)
C:\Windows\
- file_original.ini -> file.ini
(keeping the file_original.ini and not removing it)
这就是我的尝试:
创建的文件:Enable mr.cmd
>编辑:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=file_mr
SET new=file
for /f "tokens=*" %%f in ('C:\Windows\ /b *.ini') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
创建的文件:Disable mr.cmd
>编辑:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=file_original
SET new=file
for /f "tokens=*" %%f in ('C:\Windows\ /b *.ini') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
但这很好(尚未测试)重命名文件并删除原始文件) - 这不是我想要的。
与您手动完成相同,方法是复制文件并重命名复制的文件。
答案 0 :(得分:1)
您可以执行此操作以自动检测当前文件file.ini
是否为file_mr.ini
或file_original.ini
的副本并进行切换,因此您不需要两个批处理文件:
rem // Change to working directory:
pushd "C:\Windows"
rem // Compare current `file.ini` file with `file_original.ini`:
fc "file.ini" "file_original.ini" > nul 2>&1 && (
rem // Files match, so exchange `file.ini` with copy of `file_mr.ini`:
copy /Y "file_mr.ini" "file.ini" > nul
echo Copied file `file_mr.ini`.
) || (
rem // Files did not match or `file.ini` not found:
copy /Y "file_original.ini" "file.ini" > nul
echo Copied file `file_original.ini`.
)
popd
请注意,您需要对文件C:\Windows\file.ini
的写权限。
答案 1 :(得分:0)
我查看了相关问题,并使用了这个答案:
Enable mr.cmd
:
copy /y C:\windows\file.ini C:\windows\file_original.ini
copy /y C:\windows\file_mr.ini C:\windows\file.ini
和
Disable mr.cmd
:
copy /y C:\windows\file.ini C:\windows\file_mr.ini
copy /y C:\windows\file_original.ini C:\windows\file.ini
更新:
经过更多调查后,现在按预期工作:
MR Enable.bat
:
find "C:\mr_folder\" C:\Windows\file.ini >nul && call
copy /y C:\Windows\file.ini C:\Windows\file_original.ini
copy /y C:\Windows\file_mr.ini C:\Windows\file.ini
MR Disable.bat
:
find "C:\mr_folder\" C:\Windows\file.ini >nul && call
copy /y C:\windows\file.ini C:\windows\file_mr.ini
copy /y C:\windows\file_original.ini C:\windows\file.ini