これを行う.BAT
ファイルを作成する必要があります。
C:\myprogram\sync\data.handler
が存在する場合は終了します。C:\myprogram\html\data.sql
が存在しない場合は終了します。C:\myprogram\sync\
で(test
、test3
およびtest2
)以外のすべてのファイルとフォルダーを削除しますC:\myprogram\html\data.sql
をC:\myprogram\sync\
にコピーするsync.bat myprogram.ini
を付けて他のバッチファイルを呼び出します。それがBash環境にあったなら、それは私にとって簡単でした、しかし、私はファイルまたはフォルダーが存在するかどうか、そしてそれがファイルまたはフォルダーであるかどうかをテストする方法を知りません。
IF EXISTを使ってファイルをチェックすることができます。
IF EXIST "filename" (
REM Do one thing
) ELSE (
REM Do another thing
)
あなたが "else"を必要としないなら、あなたはこのようなことをすることができます:
set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=
これはファイルやフォルダを検索する実用的な例です。
REM setup
echo "some text" > filename
mkdir "foldername"
REM finds file
IF EXIST "filename" (
ECHO file filename exists
) ELSE (
ECHO file filename does not exist
)
REM does not find file
IF EXIST "filename2.txt" (
ECHO file filename2.txt exists
) ELSE (
ECHO file filename2.txt does not exist
)
REM folders must have a trailing backslash
REM finds folder
IF EXIST "foldername\" (
ECHO folder foldername exists
) ELSE (
ECHO folder foldername does not exist
)
REM does not find folder
IF EXIST "filename\" (
ECHO folder filename exists
) ELSE (
ECHO folder filename does not exist
)
ファイルが存在するか存在しない場合にコマンドを実行する方法の良い例です。
if exist C:\myprogram\sync\data.handler echo Now Exiting && Exit
if not exist C:\myprogram\html\data.sql Exit
これら3つのファイルを取り出して一時的な場所に置きます。フォルダを削除した後、それはそれらの3つのファイルを復元します。
xcopy "test" "C:\temp"
xcopy "test2" "C:\temp"
del C:\myprogram\sync\
xcopy "C:\temp" "test"
xcopy "C:\temp" "test2"
del "c:\temp"
XCOPY コマンドを使用します。
xcopy "C:\myprogram\html\data.sql" /c /d /h /e /i /y "C:\myprogram\sync\"
/c /d /h /e /i /y
の意味を説明します。
/C Continues copying even if errors occur.
/D:m-d-y Copies files changed on or after the specified date.
If no date is given, copies only those files whose
source time is newer than the destination time.
/H Copies hidden and system files also.
/E Copies directories and subdirectories, including empty ones.
Same as /S /E. May be used to modify /T.
/T Creates directory structure, but does not copy files. Does not
include empty directories or subdirectories. /T /E includes
/I If destination does not exist and copying more than one file,
assumes that destination must be a directory.
/Y Suppresses prompting to confirm you want to overwrite an
existing destination file.
`To see all the commands type`xcopy /? in cmd
オプションsync.bat myprogram.iniを使用して他のバッチファイルを呼び出します。
これがどういう意味なのかわかりませんが、両方のファイルを開きたい場合は、次のようにファイルのパスを入力してください
Path/sync.bat
Path/myprogram.ini
それがBash環境にあったなら、それは私にとって簡単でした、しかし、私はファイルまたはフォルダーが存在するかどうか、そしてそれがファイルまたはフォルダーであるかどうかをテストする方法を知りません。
バッチファイルを使用しています。先に述べたように、これを使用するには.batファイルを作成する必要があります。
これを行う.BATファイルを作成する必要があります。
IF /?と入力します。についての助けを得るために、それはIF EXISTの使い方を明確に説明しています。
一部のフォルダを除いて完全なツリーを削除するには、この質問の回答を参照してください。 フォルダ内の1つ以外のすべてを削除するWindowsバッチスクリプト
最後にコピーするということは、COPYを呼び出して別のbatファイルを呼び出すということを意味します。
MYOTHERBATFILE.BAT sync.bat myprogram.ini