2017-06-29 12 views
-1

C:\ Windows \フォルダにfile.iniというファイルがあるシナリオがあります。バッチファイルを使用して2つのファイルを切り替える

しかし、このファイルをfile_mr.iniに保存するバッチファイルを作成したいと思いますが、ファイル名をfile.iniに変更してください。

ファイルが作成された: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!" 
) 

ファイルが作成さ

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) 

これは私がしようとしたものです:

だから、このように基本的にスイッチになります: 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では、これを行うでしょうあなたは2つの異なるファイルを持っていて、 'file.ini'からあなたが使いたいものへのリンクを作成するだけです。私は今Windows上に 'mklink'があると信じています... https://ss64.com/nt/mklink.html –

+0

@MarkSetchellありがとうございますが、私はこれを(まだ)Linux上で行う必要はありません: ) – Kevdog777

1

あなたは自動的に現在のファイルfile.iniがあるかどうかを検出するために、これを行うことができますfile_mr.iniまたはfile_original.iniのコピーとトグルするので、2つのバッチファイルは必要ありません。

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

関連する問題