2017-06-29 61 views
-1

我有一个场景,在我的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!" 
) 

但这是好的(尚未测试)重命名文件并删除原始文件) - 这不是我想要的。

就像手动操作一样,通过复制文件并重命名复制的文件。

+1

这可能是我要找的答案:https://stackoverflow.com/questions/3058054/create-a-batch-file-to-copy-and-rename-file – Kevdog777

回答

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 

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 
+2

在Linux上,你可以这样做有符号链接的东西,你会有两个不同的文件,然后创建一个从'file.ini'到你想要使用的链接。我相信现在Windows上有一个'mklink' ... https://ss64.com/nt/mklink.html –

+0

谢谢@MarkSetchell,但是我很高兴我不必在Linux上这样做(但是): ) – Kevdog777

1

你可以这样做自动检测当前文件file.ini是否file_mr.inifile_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的写入权限。

+0

啊,那会让生活更轻松哈哈 – Kevdog777

相关问题