サーチ…


前書き

このトピックでは、バッチでファイルを作成、編集、コピー、移動、および削除する方法を学習します。

バッチでのファイルの作成

バッチでテキストファイルを作成する理由は複数あります。しかし、理由が何であれ、これはあなたがそれをする方法です。

既存のテキストファイルを上書きする場合は>使い> 。例:

@echo off
echo info to save > text.txt

しかし、既存のテキストファイルにテキストを追加する場合は、 >>使用し>> 。例:

@echo off
echo info to save >> text.txt

複数行のテキストをファイルに保存する必要がある場合use ()>text.txt例:

@echo off
(echo username
 echo password)>text.txt

ファイルをバッチでコピーする方法

ある場所から別の場所にファイルをコピーすることができます。この例では、教えていきます。

xcopyコマンドを使用できます。構文は次のとおりですxcopy c:\From C:\To

例:

@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop

使用できるスイッチもあります。それらを表示するには、 Start Menu -> Accessories -> Command PromptStart Menu -> Accessories -> Command Promptを開き、 xcopy /?Start Menu -> Accessories -> Command Promptxcopy /?

ファイルを移動する

moveコマンドを使用すると、ファイルを移動できます。

@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul

Meow.batは、移動するファイルを表します。 "Meow Folder"はMeow.batMeow Folder移動します。 /Yは確認のためにプロンプ​​トを表示しないように指示します。これを/-Y置き換えると、確認のためにバッチファイルのプロンプトが表示されます。 >nulはコマンド出力を隠します。 >nul持っていなければ、出力されます:

    1 File Moved

ファイルの削除

DELERASEエイリアス)コマンドを使用すると、ファイルを削除できます。

@echo off
del foo.ext

このコマンドは、現在のディレクトリからfoo.extを削除します。次のようなパスとファイルを指定することもできます。

del C:\Foo\Bar\Baz.ext

しかし、パスの周りに引用符( " )を付けることは常に理想的です。 ここでその理由を見てください。


DELはいくつかのフラグがあります。

関数
/P ファイルを削除する前にユーザーにプロンプ​​トを表示する
/F 読み取り専用ファイルを強制的に削除する
/S サブディレクトリ内のファイルを削除する
/Q ユーザーのプロンプトを防止します。
/A フィルタ:特定の帰属ファイルのみを削除します。
-文字を使用すること 、そのタイプとして帰属しないことを意味します。

xcopyを使わないでファイルをコピーする

この例では 、ユーザーBoeNoeはxcopyコマンドを使用してファイルをコピーする方法を示しました。 copyという余分なコマンドもありcopy

ここに簡単な例があります:

copy foo.ext bar.ext

foo.extbar.extにコピーし、存在しないときはbar.extを作成します。また、ファイルへのパスを指定することができますが、引用符(入れて常に理想的である" 、パスの周り)を参照してくださいここに理由。


copyには多くのフラグもありますcopy /?参照してくださいcopy /?コマンドプロンプトでhelp copyして詳細を表示することもできます。

ファイルのN番目の行を編集する

バッチファイルには、 replaceappend>>> )以外のファイルのn番目の行を置換するための組み込みメソッドはありません。 forループを使用すると、この種の関数をエミュレートできます。


@echo off
set file=new2.txt

call :replaceLine "%file%" 3 "stringResult"

type "%file%"
pause
exit /b

:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion

set /a lineCount=%~2-1

for /f %%G in (%~1) do (
    if !lineCount! equ 0 pause & goto :changeLine
    echo %%G>>temp.txt
    set /a lineCount-=1
)

:changeLine
echo %~3>>temp.txt

for /f "skip=%~2" %%G in (%~1) do (
    echo %%G>>temp.txt
)

type temp.txt>%~1
del /f /q temp.txt

endlocal
exit /b
  • メインスクリプトはreplaceLine関数を呼び出します。ファイル名/変更する行/と置き換える文字列を指定します。

  • 関数は入力を受け取ります

    • すべての行をループし、置換行の前に一時ファイルにechoします
    • それはファイルに置換行をechoします
    • 残りのファイルに出力を続けます
    • 一時ファイルを元のファイルにコピーします。
    • 一時ファイルを削除します。
  • メインスクリプトはコントロールを元に戻し、結果をtypeします。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow