在路径中设置起始位置(批处理)

时间:2013-08-29 05:06:10

标签: windows batch-file path

我是批处理脚本的新手,从上周开始学习这个,这是我在这里问的第一个问题。我的情况是, 考虑这个例子,它列出了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
  • \圣何塞\ TEST1 \ 1 \ 13
  • \圣何塞\ TEST1 \ 1 \ 12 \ 131
  • \ Jose \ test1 \ 1 \ 12 \ 131 of 131
  • \圣何塞\ TEST1 \ 1 \ 12 \ 131 \ 1311
  • \圣何塞\ TEST1 \ 1 \ 12 \ 131 \ 1311 \ 13111
  • \圣何塞\ TEST1 \ 1 \ 12 \ 131 \ 1311 \ 13112
  • \ Jose \ test1 \ 1 \ 12 \ 131 \ 1311的副本
  • \ Jose \ test1 \ 1 \ 12 \ 131 \ 1311 \ 13111
  • 的副本
  • \ Jose \ test1 \ 1 \ 12 \ 131/1311 \ 13112的副本
  • \圣何塞\ TEST1 \ 1 \ 13 \ 132
  • \圣何塞\ TEST1 \ 1 \ 13 \ 132 \ 1321
  • \圣何塞\ TEST1 \ 1 \ 13 \ 132 \ 1321 \ 13211

我想从所有行中删除'\ jose',即我想将'\ test1'设置为起始路径。需要帮助的人......提前谢谢...

1 个答案:

答案 0 :(得分:1)

使用sed for Windows尝试:

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

.. 纯批次的解决方案

@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