2012-03-08 99 views
0

您能否幫我列出表格格式的文件(我喜歡批處理文件)。對於列表命令,我會使用dir/b/o:n按名稱對文件進行排序..但是這會產生段落。我需要將文件列表複製到xls表格...並且這些文件將在列中。所以我的問題是這樣的:獲取CMD中表格格式的文件列表

如果你有像1,2,3,4,5 ...等文件,我希望他們寫在一行,其中製表符用作文件之間的分隔符。

+0

你的代碼失敗了嗎? – jeb 2012-03-08 12:59:15

回答

2

「哪裏使用製表符(?)作爲分隔符」???如果你想用Excel打開文件,那麼最簡單的選擇是使用逗號作爲分隔符(.CSV格式)。由於逗號可以出現在文件名中,因此您希望將這些名稱用引號引起來。

如果按名稱排序,那麼簡單的FOR是最有效的選項,因爲它總是按名稱排序。您可以使用<nul SET /P將每個文件名輸出到.CSV文件,而無需引入新行。

@echo off 
<nul (
    for %%F in (*) do set /p =""%%F"," 
) >fileList.csv 

如果你真的想使用DIR命令,那麼你需要FOR/F。我能看到這樣做的唯一原因是如果你想改變排序順序。我設置了EOL=:以防止以分號開頭的文件名的可能性不大。有效的文件名(或文件路徑)永遠不能以冒號開頭。

@echo off 
<nul (
    for /f "eol=: delims=" %%F in ('dir /b /o:n') do set /p =""%%F"," 
) >fileList.csv 
+0

感謝您的幫助。我已經發現在Open Office或Excel中使用插入「轉置」功能的速度更快。我以前沒有意識到。只是將dir重定向到文件,然後插入data do列,然後複製它們並用轉置插入。注意你的命令。 user1141649 2012-03-08 19:15:48

+1

它將輸入重定向到nul設備(禁用輸入),以便括號內的所有內容。它實際上只需要SET/P命令,但是對於整個塊執行一次操作比對每次循環迭代操作更有效。 – dbenham 2012-03-08 20:17:45

+0

爲什麼在命令集中有第二個引號set/p =「」%% F「,」我的意思是引用%% F? – user1141649 2012-03-30 12:14:36