ベストアンサー1
受け入れられた回答では、コマンドで最新のファイルを使用して終了する例が示されています。他の複雑な操作を含む bat ファイルでこれを実行する必要がある場合は、次のコードを使用して、最新のファイルのファイル名を変数に格納できます。
FOR /F "delims=" %%I IN ('DIR "*.*" /A-D /B /O:D') DO SET "NewestFile=%%I"
%NewestFile%
これで、 bat ファイルの残りの部分全体を参照できるようになります。
たとえば、ディレクトリからデータベース .bak ファイルの最新バージョンを取得し、それをサーバーにコピーして、データベースを復元するには、次のようにします。
:Variables
SET DatabaseBackupPath=\\virtualserver1\Database Backups
echo.
echo Restore WebServer Database
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath%\WebServer\*.bak" /B /O:D') DO SET NewestFile=%%I
copy "%DatabaseBackupPath%\WebServer\%NewestFile%" "D:\"
sqlcmd -U <username> -P <password> -d master -Q ^
"RESTORE DATABASE [ExampleDatabaseName] ^
FROM DISK = N'D:\%NewestFile%' ^
WITH FILE = 1, ^
MOVE N'Example_CS' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example.mdf', ^
MOVE N'Example_CS_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example_1.LDF', ^
NOUNLOAD, STATS = 10"