@ECHO OFF
SETLOCAL
SET "sourcedir=."
SET "filemask=csv*.csv"
(
FOR /f "tokens=1*delims=[]" %%c IN (
'dir /b /a-d /on "%sourcedir%\%filemask%" ^|find /n /i ".csv"'
) DO (
SET "firstrow=Y"
FOR /f "usebackqdelims=" %%r IN ("%sourcedir%\%%d") DO (
IF DEFINED firstrow IF %%c==1 ECHO Sourcefile,%%r
IF NOT DEFINED firstrow ECHO %%c,%%r
SET "firstrow="
)
)
)>importfile.csv
設置目錄和文件匹配合適,然後
)/a-d
忽略目錄名稱/on
按名稱的順序 - 找到".csv"
(這將發生在每行中)/i
在任何情況下/n
並在[]
01中編號- 所述"tokens=1*delims=[]"
選項分配數至%% c和文件名%% d
對於每個找到的文件,
- 標誌,我們正在處理第一行 - 從文件中讀取各行成%%ř - 如果它是文件#1中的第一行,將「sourcefile」添加到標題行 - 如果它不是第一行,則輸出文件#,前綴爲行文本 - 清除「第一行」標誌
請注意,輸出文件名不應與所選的文件掩碼相匹配。爲實例生成一個.txt文件並重命名它可以。
我假設你需要特別對待第一行。如果你不那麼簡單REM出了REM
關鍵字(最簡單的選項)的SET "firstrow=Y"
線
當然,如果你ECHO %%d,%%r
,而不是ECHO %%c,%%r
然後將源文件名,而不是文件的序列號會出現(和可以做一些其他的簡化 - 但如果你這麼選擇,這是最簡單的選擇)
顯示一個例子。 – Endoro 2013-05-02 19:21:25
我只需在我最喜歡的文本編輯器中打開每個CSV文件,然後在每行末尾搜索並替換CarriageReturn + LineFeeds,並使用相同的東西加上一個附加的「1」,等等(手動檢查第一行和最後一行)。這樣我就會在每一行的開始處結束新的''1',''。 – 2013-05-02 20:38:04