我正在編寫一些批處理代碼,並且出現問題。 我正在爲此工作2天,我不明白爲什麼我的循環'For'這樣做。批處理腳本:用於在本地目錄而不是我的遠程目錄上循環
批處理文件是推出的C#程序與3個ARGS
這裏是我的代碼:
set lastname=%1
set firstname=%2
set init=%3
echo open my_remote_add>info.ftp
echo user>>info.ftp
echo pwd>>info.ftp
echo cd "dir/subdir/subsubdir/subsubsubdir" >> info.ftp
echo lcd C:\DIR\SUBDIR>>info.ftp
echo prompt>>info.ftp
echo mput *.e*>>info.ftp
set directory=dir
echo %directory%>>info.ftp
::##My probleme is here ##
for /f %%f in ('%directory% /b *.e*') do echo %%f>>info.ftp
::## %directory% show my remote dir, but echo %%f show locals files name with extension .e* instead of remotes directory files name##
echo bye >> info.ftp
ftp -s:info.ftp
pause`
我不知道爲什麼它的循環在我的本地目錄,而不是我的遠程目錄。 如果有人有一些想法? 謝謝。 問候, 大衛
編輯::問題解決
嗨。
我完全重建了我的想法。 問題是:dir是我在C#exe上設置的WorkingDirectory。
var proc = new ProcessStartInfo();
proc.FileName = @"C:\DIR\SUBDIR\SUBSUBDIR\exportFTP.bat";
proc.WorkingDirectory = @"C:\DIR\SUBDIR";
proc.Arguments = String.Format("{0} {1} {2}", str2, str3, str4);
Process.Start(proc);
在那之後,我認爲這是最簡單的複製,我想在一個臨時目錄transfert並在其上運行我的腳本文件。
這是我替代碼:再次
@echo off
set lastname=%1
set firstname=%2
set init=%3
set RemotePath=remotedir/remotesubdir/remotesubdir/remotesubdir
mkdir temp
set LocalPath=C:\DIR\SUBDIR\temp
for /f %%f in ('dir /b *.e0*') do copy %%f temp\%lastname%_%firstname%_%init%_%%f>>info.ftp
echo open remote_adress>info.ftp
echo user>>info.ftp
echo pwd>>info.ftp
echo lcd %LocalPath%>>info.ftp
echo cd %RemotePath% /d>>info.ftp
echo prompt>>info.ftp
echo mput *.e0*>>info.ftp
echo bye >> info.ftp
ftp -s:info.ftp
del info.ftp
rmdir /s /q temp
move /y "C:\DIR\SUBDIR\*.e0*" "C:\DIR\SUBDIR\SUBDIR\"
感謝@Compo
相反的,包括你的問題解決方案,我強烈建議您將其作爲答案發布。 – aschipfl