使用批处理文件在两个文件之间切换
我有一个场景,在我的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!"
)
但这是好的(尚未测试)重命名文件并删除原始文件) - 这不是我想要的。
就像手动操作一样,通过复制文件并重命名复制的文件。
我有看链接的问题,而现在用这样的回答:
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
UPDATE:
多的调查后,这是现在按预期工作:
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
在Linux上,你可以这样做有符号链接的东西,你会有两个不同的文件,然后创建一个从'file.ini'到你想要使用的链接。我相信现在Windows上有一个'mklink' ... https://ss64.com/nt/mklink.html –
谢谢@MarkSetchell,但是我很高兴我不必在Linux上这样做(但是): ) – Kevdog777
你可以这样做自动检测当前文件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
的写入权限。
啊,那会让生活更轻松哈哈 – Kevdog777
这可能是我要找的答案:https://stackoverflow.com/questions/3058054/create-a-batch-file-to-copy-and-rename-file – Kevdog777