2013-08-29 77 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 =!” –