2016-08-01 7 views
0

毎週金曜日の夜にファイルがディレクトリに配置されます。私はバッチファイルを(簡単なコピーコマンドで)ファイルをアーカイブするために書いています。そして、名前を変更してOLAPデータベースにファイルをロードする必要があります。残念ながら、ファイル名は日付と時刻を基準にしているので、毎週ファイル名を知りません。私が知っているのは.txtです。フォルダ内のファイルに基づいて変数を作成する

これはフォルダ内の唯一のファイルなので、ファイル名に基づいて変数を作成できますか?

これは私がこれまで持っているものです:

if not exist "%LoadFolder%\*.txt" (
    rem Send email notification that the latest Exchange Rates file does not exist... 
    "E:\Programs\PuTTY\plink.exe" -v -ssh servername -pw password /u02/hyp_app/Scripts/STFC/STFC_File_Not_Exist.ksh 
    exit 
) else (
    rem 1) Copy latest file to Archive folder... 
    FOR /F "delims=|" %%I IN ('DIR "%LoadFolder%\*.txt" /B /O:D') DO SET NewestFile=%%I 
    copy "%Load%\%NewestFile%" "%LoadFolder%\Archive\%NewestFile%" 

    rem 2) Rename the latest file to Load_File.txt... 
    FOR /F "delims=|" %%I IN ('DIR "%LoadFolder%\*.txt" /B /O:D') DO SET NewestFile=%%I 
    REN "%LoadFolder%\%NewestFile%" "Load_File.txt" 
) 

REM rest of code.......... 

私が持っている問題は、フォルダ内のファイルとは対照的に、フォルダがLOAD_FILEにリネームされていることです。私は間違って何をしていますか?

+0

質問を編集するには、[コード]ボタンを使用してテキストウィンドウでコードを適切にフォーマットします。 – sambul35

+0

[バッチファイルのデバッグ](http://www.robvanderwoude.com/battech_debugging.php) – DavidPostill

答えて

0

と仮定すると、のアーカイブフォルダが存在します。このスクリプトを試して、正確なエラーがあれば投稿してください。あなたの本当のフォルダパスをyourFolderPathを交換してください:

より
@echo off 
setlocal enabledelayedexpansion 
set LoadFolder=yourFolderPath 
if not exist "%LoadFolder%\*.txt" (
rem Send email notification that the latest Exchange Rates file does not exist... 
"E:\Programs\PuTTY\plink.exe" -v -ssh servername -pw password /u02/hyp_app/Scripts/STFC/STFC_File_Not_Exist.ksh 
) else (rem Copy latest file to Archive folder and rename it at source dir 
    FOR %%I IN ("%LoadFolder%\*.txt") DO (
     copy %%I "%LoadFolder%\Archive\%%~nxI" 
     ren %%I Load_File%%~xI)) 
timeout 5 
exit /b 

読むpath modifiersでSS64 Cmdを参考に。

+0

sambul35、ご協力いただきありがとうございます。あなたのコードが動作しているようです。 – Jack56

関連する問題