2017-06-29 60 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

相關問題