2016-07-20 14 views
2

おはようございます。 FTPに接続し、.batファイルの同じ場所にファイルをダウンロードするバッチスクリプトを実行しました。すべてがうまくいきました。現在、「ファイルの上書き許可を求める」方法がありますか?つまり、ユーザーがすでに同じ名前のファイルを持っている場合、上書きを防止して何をすべきか尋ねることは可能でしょうか?コードは実際には次のとおりです。FTP経由でファイルをダウンロードするバッチスクリプトは、どのように上書きを処理できますか?

@echo off 
echo user MYUSERNAME> ftpcmd.dat 
echo MYPASSWORD>> ftpcmd.dat 
echo bin>> ftpcmd.dat 
echo cd /www.website.com/>>ftpcmd.dat 
echo get afile.txt>> ftpcmd.dat 
echo quit>> ftpcmd.dat 
ftp -n -s:ftpcmd.dat ftp.website.com 
del ftpcmd.dat 
+2

バッチスクリプトの 'ftp'コマンドラインの前に' if exist "afile.txt" 'を使用しますか?条件付きでユーザーに「選択」を使用して「はい」または「いいえ」を上書きするように促すことができます... – aschipfl

+0

ああ、これは良いことです。 –

答えて

3

あなたは、事前にif exist "afile.txt"を使用して、ユーザーが何をすべきかを決定できるようにchoiceを使用することができます。

@echo off 
if exist "afile.txt" (
    choice /C YN /M "Overwrite 'afile.txt'? " 
) else (
    > nul ver & rem (clear `Errorlevel`) 
) 
if not ErrorLevel 2 (
    > "ftpcmd.dat" (
     echo user MYUSERNAME 
     echo MYPASSWORD 
     echo bin 
     echo cd /www.website.com/ 
     echo get afile.txt 
     echo quit 
    ) 
    ftp -n -s:ftpcmd.dat ftp.website.com 
    del "ftpcmd.dat" 
) 

しかし、 -iスイッチは ftpコマンドラインとインタラクティブ promptモードでは存在しないためには必要がありますデフォルトでオンになっていれば、私は ftpコマンドがユーザにとにかくプロンプトを出すと仮定します...
訂正アップデート:「対話モード」とは、mgetmputは、存在するかどうかにかかわらず、一致する各ファイルの転送を確認するようユーザーに依頼します。 technet.microsoft.com/en-us/library/bb490670.aspxを参照してください。 ftp.exeに上書き確認はありません。 [Martin Prikryl]

2

は、ローカルファイルを転送する前にすでに存在する場合、テストするif exist commandを使用してください。

存在する場合は、ask an user for confirmationです。

@echo off 

if not exist afile.txt goto download 

:ask 
echo Overwrite? 
set INPUT= 
set /P INPUT=Y/N: %=% 
If /I "%INPUT%"=="Y" goto download 
If /I "%INPUT%"=="N" exit 
echo Incorrect input 
goto ask 

:download 
... 
ftp -n -s:ftpcmd.dat ftp.website.com 

ものの、長期的な解決策のため、あなたはより良い代わりにバッチファイルでこれをハッキングの、PowerShellを使用します。

+0

は本当にいいですね。ありがとう! –

関連する問題