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
  • \何塞\test1\1\13
  • \何塞\test1\1\12\131
  • \Jose\test1\1\12\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' 设置为起始路径。需要帮助的家伙..提前谢谢...

4

1 回答 1

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 
于 2013-08-29T06:01:36.377 回答