2015-11-19 80 views
0

下面的代碼與圖表類似,但是當我打開目標文件時,每行都會顯示輸入兩次!我刪除了目標文件並多次檢查。我沒有跑兩次。批處理類型重複行

@echo off 
setlocal enableDelayedExpansion 
set "sourcelocation=\\whatever\Outbox\" 
set targetlocation="G:\whatever\SharedData\\" 
set "tmplocation=C:\tmpmerges\\" 
set refdate=20151113 
set versionID=000001 
set entity=WTV 
echo ...merging files 
for %%f in (!tmplocation!*_WTVS_*!refdate!*_V!versionID!.txt) do type "%%f" >> !tmplocation!S_!entity!_WTVS_!refdate!_V!versionID!.txt 
echo file merge completed 
pause 
+3

的'for'通配符'!tmplocation!* _ * WTVS_也'捕捉輸出重定向'所使用的文件!tmplocation!S_!實體!_WTVS_'所以這些文件都翻了一倍。 – wOxxOm

+1

我只是做了一些快速測試,我認爲如果您只是使用FOR/F命令在FOR/F中執行DIR命令,您應該可以。我相信,在FOR/F開始處理命令輸出之前,它會將命令的所有輸出加載到內存中。 – Squashman

+0

@Squashman。嘗試但不知道如何實施您的建議。要做到這一點:'for %% f in(!tmplocation!* _ WTVS _ *!refdate!* _ V!versionID!.txt)輸入「%% f」>>!tmplocation!Merged \ S_!entity!_WTVS_! refdate!_V!versionID!.txt' – BuckTurgidson

回答

0

不是真正理解你爲什麼使用所有變量的延遲擴展。但你可以用你的FOR命令來試試這個。

for /F "delims=" %%f in ('dir /a-d /b "!tmplocation!*_WTVS_*!refdate!*_V!versionID!.txt"') do type "%%~f" >> !tmplocation!S_!entity!_WTVS_!refdate!_V!versionID!.txt 
+0

這是給'找不到文件'。將研究或解決方案,並嘗試實施後者。 – BuckTurgidson

+0

@BuckTurgidson應該像標準的FOR命令一樣工作。我看不出您是如何實施它的,因此我無法爲您排除故障。 – Squashman