2014-12-04 32 views
-1

對不起,如果我的問題不清楚。我嘗試了一部分問題,但無法繼續。對批處理腳本執行文件移動和字符串操作

文件夾結構

Home 
A A1 - stdinxx.csv (xx - 2 digit number) 
    A2 - sapvdyy.csv (yy - 2 digit number) 
    A3 
    . 
    . 
    . 
    AN 
B B1 - stdin.csv 
    B2 - sapvd.csv 
    B3 
    . 
    . 
    . 
    BN 

mybat.bat

mybat.bat應在Home文件夾。 A和B是子文件夾.A和B具有其中的子文件夾(不是固定數量,但是子文件夾的數量與A和B相匹配)。

我做一個for循環,並獲得所有文件名在子文件夾的家庭(問題在這裏)。

For /f "delims=" %%a in ('Dir /A:-D /b /s *.csv 2^>nul') do If exist "%%a" (copy %%a B\subfolder_based_upon_file_input\%%~ni.csv) 

我該怎麼做循環只爲一個文件夾和子文件夾* .csv?

如何在複製時刪除最後2位數(認爲%%% i:〜-2%會工作......不)?

如何修剪文件路徑以獲取A1或A2,以便我可以將文件從A1複製到B1等等?

任何方向或想法都會拯救我的生命。 PLZ。

流量我在想。

在文件夾「A」及其子文件夾上搜索* .csv文件。

獲取文件

的名字修剪下來的文件名,這樣2位都不見了(文件總是包含2位數字的值)

從文件路徑獲取文件夾名稱,其中文件駐留( 1從A1)

複製裁剪文件到B \ B(1)\

請幫助。請。

+1

請編輯你的問題,並嘗試格式化源。使用預覽來查看它是否可讀。 – 2014-12-04 22:50:27

+0

對不起,現在完成了。 – prasuangelo 2014-12-05 00:19:22

回答

1
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir\t w o" 
FOR /f "delims=" %%a IN (
'xcopy /l /s "%sourcedir%\A\*.csv" ' 
) DO IF EXIST "%%a" (
SET "destfilename=%%~na" 
FOR /f "delims=" %%s IN ("%%~dpa.") DO ECHO f|XCOPY "%%a" "%sourcedir%\B\%%~nxs\!destfilename:~0,-2!.csv" >nul 
) 

GOTO :EOF 

您需要更改sourcedir的設置以適合您的情況。

我接下來要把A下的目錄結構複製到B下的一個完全相同的結構中,不同之處在於文件名的最後兩個字符被刪除了。

你的例子看起來很模糊。更好地發佈一個具有代表性的真實結構。上面的代碼將生成名爲A*的子目錄uunder B - 可以根據需要更改它們。

%%x:~m,n語法不支持,這就是爲什麼它不起作用。您需要將這些值放入一個普通環境變量中,並按照演示使用delayedexpansion方法。如果你想操作目標子目錄名 - 然後按照彈跳球,使用子目錄名%%~nxs

+0

感謝Magoo。你救了我的一天...... !!! – prasuangelo 2014-12-05 20:42:44