2012-09-19 126 views
1

利用這些論壇的知識,我編譯了一個有用的批處理腳本。批處理腳本在XP中運行,而在Win7中運行

Del "- Output.tx_" 
Del "- Output.txt" 

FOR %%I in (*.txt) do @echo Filename: %%~nxI >>"- Output.tx_" & echo. >>"- Output.tx_" & echo. >>"- Output.tx_" & FOR %%f in (%%I) do type %%I >>"- Output.tx_" & echo. >>"- Output.tx_" & echo. >>"- Output.tx_" 

TYPE "- Output.tx_" | MORE /E /P /S > "- Output.txt" 
Del "- Output.tx_" 

我的家用電腦有XP(SP3,32位),並且腳本完美地結合了文本文件,如下所示。

Filename: Test1.txt 

[Text file 1 contents] 

Filename: Test2.txt 

[Text file 2 contents] 

... and so on. 

但是,我在幾個月前在我的計算機上運行這個腳本作爲測試,並遇到了問題。工作中的計算機具有Windows 7(32位,SP1),並且僅將文本文件的標題組合到輸出文件中。這導致以下內容:

Filename: Test1.txt 

Filename: Test2.txt  

... and so on. 

任何意見或反饋讓腳本在Windows 7上正常工作將不勝感激。

感謝,

DWIC

回答

1

我能想到的唯一的事情是,你的Win7電腦上的文本文件的部分(或全部)在那裏有名字空格或特殊字符,例如該類型無法找到它們。如果發生這種情況,應該有一個錯誤消息,但它不在輸出文件中,因爲您沒有重定向stderr。

該問題可以通過引用變量來解決。

你的代碼比需要的更復雜。這裏是一個簡化的版本,除了引用問題已被修復外,它們也完成了相同的功能。我也重定向了stderr。

@echo off 
2>nul del "- Output.txt" 
(
    for %%F in (*.txt) do @(
    echo Filename: %%F 
    echo. 
    echo. 
    type "%%F" 
    echo. 
    echo. 
) 
) | more /s /p >"- Output.tx_" 2>&1 
move "- Output.tx_" "- Output.txt" >nul 
+0

編輯 - 增加了關於錯誤的討論,並在代碼中重定向stderr。 – dbenham

+0

您先生,是正確的!謝謝!工作中的文件在其標題中有空格,而我家裏的測試文件沒有。因此,我能夠在家用電腦上覆制錯誤,這當然意味着它畢竟不是Windows 7的問題。 雖然我的腳本存在一些問題,但似乎無法自行解決問題。除非我最後刪除「&> 1」,否則腳本不起作用。在我這樣做後,我的輸出結果如下。 – DWICBIOOM

+0

C:\ Documents and Settings \ Admin \ Desktop \ Macro(misc)projects \ BAT \ Test Folder>(echo Filename: - Output.txt&echo。&echo。&type「 - Output.txt」&echo。&回聲。) 文件名: - Output.txt C:\ Documents and Settings \ Admin \ Desktop \ Macro(misc)projects \ BAT \ Test Folder>(echo文件名:Test 1.txt&echo。&echo。&鍵入 「測試的1.txt」 &回聲及回聲) 文件名:試驗的1.txt [文本文件1項內容] \t \t ...等on.' – DWICBIOOM

相關問題