2017-07-02 54 views
-2

怎麼沒有在批處理文件複製文件不與數字字符開始批量

開頭,例如數字符複製文件我的目錄列表的:

12red.pcx 
9red.pcx 
96blue.pcx 
alipro.pcx 

那麼我只需要複製alipro。通過批量PCX

使用的文件複製此批代碼開頭編號字符:

@echo off 
set Design_path=D:\ 
set USB_path=E:\usb\ 
set t12=12*.pcx 
set t9=9*.pcx 
set t6=6*.pcx 
set tsize=*.pcx 
set design12=Dis_12 
set design9=Dis_9 
set design6=Dis_6 
set designsize=D_Size 
rem // Create Dir if not exist 
if not exist %Design_path%%design12% (mkdir %Design_path%%design12%) 
if not exist %Design_path%%design9% (mkdir %Design_path%%design9%) 
if not exist %Design_path%%design6% (mkdir %Design_path%%design6%) 
if not exist %Design_path%%designsize% (mkdir %Design_path%%designsize%) 
if exist %USB_path%%t12% copy %USB_path%%t12% %Design_path%%design12% 
if exist %USB_path%%t9% copy %USB_path%%t9% %Design_path%%design9% 
if exist %USB_path%%t6% copy %USB_path%%t6% %Design_path%%design6% 
+4

如何與您的要求,您的代碼?至於請求。我會在('dir/B * .pcx^| findstr'^ [^ 0-9]'')中使用'for/f「delims =」%% a「做回聲複製%% A x:\ whereever' – LotPings

+0

謝謝我的朋友 – AliReza

+1

剛剛看到'%% a'有錯誤的不同套管 - 將它們改爲大寫或小寫。 – LotPings

回答

0

ñ流量爲副本,而不在9號,6開始的任何文件,12

例如我的列表中的:

3366.pcx 
12gun.pcx 
9ghost2.pcx 
6bgre.pcx 
avf.pcx 

我只需要複製avf.pcx和3366.pcx。

這是我的代碼

for /f "delims=" %%a in ('dir %USB_path% /b *.pcx^|findstr /r /c:"^[^9][^6][^12]" ') do (
    echo %%a 
    copy "%USB_path%%%a" "%Design_path%%designsize%" 
) 
+0

[標籤:lotpings]請幫我 – AliReza

+0

所以從你的第一個要求不同,你想排除指定數字不是全部? BTW更好地編輯你的問題,只回答你自己的問題,如果你有其他可能感興趣的解決方案。 – LotPings

+0

謝謝[標籤:lotpings]它的男子我問新的問題? – AliReza

1

該解決方案使用FINDSTR是有限的正則表達式的功能,這是一個否定的字符類[^]只選擇線 開始(^錨在開始)不 0到9 [^0-9]

for /f "delims=" %%a in (
    'dir /B *.pcx^|findstr "^[^0-9]" ' 
) Do Echo copy %%a x:\whereever 

如果您想排除特殊數字,您可以使用不同的RegEx 012xx個過濾行匹配的選項/V 你可以有一個空格隔開幾個正則表達式

for /f "delims=" %%a in (
    'dir /B "*.pcx" ^|findstr /V "^6 ^9 ^12" ' 
) Do (
    Echo %%a 
    Rem copy ... 
) 

樣本輸出

> Dir /B 
11foo.pcx 
12red.pcx 
13bar.pcx 
3366.pcx 
96blue.pcx 
9red.pcx 
alipro.pcx 

> SO_44875749.cmd 
11foo.pcx 
13bar.pcx 
3366.pcx 
alipro.pcx