2013-08-29 109 views
0

我是批處理腳本中的新手,僅從上週開始學習,這是我在這裏問的第一個問題。我的情況, 考慮這個例子列出了D:/ Jose/test1下的所有目錄,並把它附加到一個文本文件中。在路徑中設置起始位置(批量處理)

代碼:

@echo off 
SETLOCAL EnableDelayedExpansion 
cd /d D:\Jose\test1 
FOR /F "delims=" %%G in ('dir /ad /on /s /b') DO (
ECHO %%~pG%%~nG>>D:\test2\list.txt 
) 
ENDLOCAL 
pause 

文本文件輸出:

  • \聖何塞\ TEST1 \ 1
  • \聖何塞\ TEST1 \ 2
  • \聖何塞\ TEST1 \ 1 \ 12
  • \ Jose \ test1 \ 1 \ 13
  • \ Jose \ test1 \ 1 \ 12 \ 131
  • \聖何塞\ TEST1 \ 1 \ 12 \ 131
  • 複印\聖何塞\ TEST1 \ 1 \ 12 \ 131 \ 1311
  • \聖何塞\ TEST1 \ 1 \ 12 \ 131 \ 1311 \ 13111
  • \何\ TEST1 \ 1 \ 12 \ 131 \ 1311 \ 13112
  • \聖何塞\ TEST1 \ 1 \ 12 \ 131複製\ 1311
  • \聖何塞\ TEST1 \ 1 \ 12 \ 131複製\ 1311 \ 13111
  • \聖何塞\ TEST1 \ \ 1311 \ 13112
  • 131 1張\ 12 \複印\聖何塞\ TEST1 \ 1 \ 13 \ 132
  • \聖何塞\ TEST1 \ 1 \ 13 \ 1 32 \ 1321
  • \聖何塞\ TEST1 \ 1 \ 13 \ 132 \ 1321 \ 13211

我想從所有線即除去 '\聖何塞',我想設置 '\ TEST1' 作爲起始路徑。需要幫助guys..Thanks提前...

回答

1

嘗試與sed for Windows

for /d /r %%G in (*) do sed -r "s/^\\[^\]+(\\.*)/\1/" "%%~pnxG">>D:\test2\list.txt 

..solution與純一批

@echo off &setlocal 
(FOR /f "tokens=2* delims=\" %%a IN ('dir /ad /on /s /b') DO ECHO(\%%~b)>D:\test2\list.txt 
TYPE D:\test2\list.txt 
PAUSE 

..和更多批次

@echo off &setlocal 
(FOR /d /r %%G in (*) DO (
    SET "fname=%%~G" 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    SET "fname=!fname:*\Jose=!" 
    ECHO(!fname! 
    ENDLOCAL 
))>D:\test2\list.txt 
TYPE D:\test2\list.txt 
PAUSE 
+0

這看起來不錯,但我在xp上工作,我不願意安裝任何東西,也不能要求我的客戶端這樣做..有沒有其他方法使用基本批處理? –

+0

@JoseAntony當然,請。看我的編輯。 – Endoro

+0

謝謝...這工作..但我不得不將'%%〜a'更改爲'%%〜G'和「fname =!fname:\ Jose =!」到「fname =!fname:D:\ Jose =!」 –