2013-08-01 31 views
0

我有一個CSV文件,我從我們的數據模塊中導出,其中只包含產品編號。產品號碼是逗號分隔的,這可能會或可能不會遇到問題(我對程序員不太好)。我在stackoverflow中發現了一個奇特的小批處理,這幫助我在運行批處理時讀取csv,但是,當觸發正確的命令時,我迷失了方向。cmd批量搜索csv使用wilcard

我已經設置我要掃描的目錄中,使用theDir變量,在我的csv文件我有一個列表中的產品編號。的CSV內容(只有一列)例:

10000,02,65 
10000,25,65 
10001,02,65 
... 

我要複製包含比在CSV每行包含,這就是爲什麼我需要的通配符搜索找到並複製文件的更多字符的文件。文件示例。

10000,02,65 chocolate bar.jpg 
10000,25,65 ice cream cone.jpg 
10001,02,65 candy.jpg 
.... 

我真的想對JPG文件從一個目錄複製到另一個,但你可以從我的CSV看到,我只有產品編號相匹配的文件名,但我無法弄清楚如何使用我的批處理中的wilcard搜索通過csv循環查找每個文件並將其複製到不同的目錄。我希望這一切都有道理,並感謝您對我的批處理問題的所有意見和支持。謝謝。

+0

我只想澄清:您的文件名看起來像「'10000,02,65巧克力bar.jpg'」? – Stephan

+0

是的,Stephan,你是對的,但我不知道整個文件名,我只知道一個分數,這是在csv給我的產品編號。然後,我需要掃描目錄以找到文件名中該產品編號的匹配項。我希望這是有道理的。 – CanCan

回答

1

代替

copy %theDir%\%%x*.* "C:\Web\ActivePhotos\" 

嘗試:

copy "%theDir%\%%x*.*" "C:\Web\ActivePhotos\*.*" 

(你的文件名包含空格!)

編輯 好,它在我的電腦上運行良好。用逗號和空格的問題可以通過封閉在Doubleqoutes path\filename")easilybe解決這裏是證明:

C:\Users\Stephan\CanCan>type t.bat 
@echo off 
dir C:\users\Stephan\CanCan\New\*.* 

set "theDir=C:\users\Stephan\CanCan" 
for /F "delims=" %%x in (C:\users\Stephan\CanCan\t.csv) do (
    copy "%theDir%\%%x*.*" "C:\users\Stephan\CanCan\New\*.*" 
) 

dir C:\users\Stephan\CanCan\New\*.* 

C:\Users\Stephan\CanCan>type t.csv 
10000,02,65 
10000,25,65 
10001,02,65 
C:\Users\Stephan\CanCan> 
C:\Users\Stephan\CanCan>dir *.jpg 
Datenträger in Laufwerk C: ist Boot 
Volumeseriennummer: FA25-2E12 

Verzeichnis von C:\Users\Stephan\CanCan 

01.08.2013 18:45     6 10000,02,65 chocolate bar.jpg 
01.08.2013 18:45     6 10000,25,65 ice cream cone.jpg 
01.08.2013 18:45     6 10001,02,65 candy.jpg 
       3 Datei(en),    18 Bytes 
       0 Verzeichnis(se), 753.621.913.600 Bytes frei 

C:\Users\Stephan\CanCan>t.bat 
Datenträger in Laufwerk C: ist Boot 
Volumeseriennummer: FA25-2E12 

Verzeichnis von C:\users\Stephan\CanCan\New 

01.08.2013 18:52 <DIR>   . 
01.08.2013 18:52 <DIR>   .. 
       0 Datei(en),    0 Bytes 
       2 Verzeichnis(se), 753.621.913.600 Bytes frei 
C:\users\Stephan\CanCan\10000,02,65 chocolate bar.jpg 
     1 Datei(en) kopiert. 
C:\users\Stephan\CanCan\10000,25,65 ice cream cone.jpg 
     1 Datei(en) kopiert. 
C:\users\Stephan\CanCan\10001,02,65 candy.jpg 
     1 Datei(en) kopiert. 
Datenträger in Laufwerk C: ist Boot 
Volumeseriennummer: FA25-2E12 

Verzeichnis von C:\users\Stephan\CanCan\New 

01.08.2013 18:53 <DIR>   . 
01.08.2013 18:53 <DIR>   .. 
01.08.2013 18:45     6 10000,02,65 chocolate bar.jpg 
01.08.2013 18:45     6 10000,25,65 ice cream cone.jpg 
01.08.2013 18:45     6 10001,02,65 candy.jpg 
       3 Datei(en),    18 Bytes 
       2 Verzeichnis(se), 753.621.913.600 Bytes frei 


C:\Users\Stephan\CanCan> 
+0

謝謝你在這裏回覆Stephan,遺憾的是,幾乎所有文件名都包含空格,這就是爲什麼我需要整理所有這些。但首先我需要使用我的csv列表來查找所有活動的照片。可悲的是,我接管了一個不瞭解濫用空白的人,或者在文件名中添加了逗號。我嘗試了你的建議,但它只是告訴我該文件不存在,但我感謝你的回覆和你的時間。 – CanCan

+0

路徑和CSV文件名與硬盤驅動器中的相同嗎?在某些情況下你會得到錯誤,我們需要消除這種可能性。 – foxidrive

+0

我不知道我是否理解你的問題foxidrive,但我會盡可能地盡力解釋。 theDir = C:\網絡\照片//是其中的JPG文件的位置(也內subdirectiories) C:\網絡\ MySQL_active_product_numbers.csv //含在單個列中的所有產品編號。 這是CSV是什麼樣子: 10000,02,65 10000,25,65 10001,02,65 這是文件名是什麼樣子: 10000,02,65巧克力棒。 jpg 10000,25,65冰淇淋cone.jpg 10001,02,65 candy.jpg 我通過csv循環,並試圖找到匹配的文件名稱,即10000,02,65。我希望這是有道理的。 – CanCan