Board logo

标题: [文本处理] [已解决]请教批处理如何删除txt文件中用dir输出的当前文件路径? [打印本页]

作者: 2013koko    时间: 2021-12-29 20:53     标题: [已解决]请教批处理如何删除txt文件中用dir输出的当前文件路径?

本帖最后由 2013koko 于 2021-12-29 22:19 编辑

用dir显示当前目录下所有文件列表(有子目录及文件)
dir /s/b abc>abc.txt
结果如下所示
d:\temp\bat\abc\a.txt
d:\temp\bat\abc\b.exe
只想输出为:
\a.txt
\b.exe

请朋友们帮助实现!
难者不会 ,会者不难,感谢!
作者: qixiaobin0715    时间: 2021-12-29 21:11

  1. dir /b /a-d>abc.txt
复制代码

作者: 2013koko    时间: 2021-12-29 21:24

谢谢回答,但我这必须用到  /s ,有很多子目录及文件
作者: 2013koko    时间: 2021-12-29 21:25

回复 2# qixiaobin0715


   
谢谢回答,但我这必须用到  /s ,有很多子目录及文件
作者: qixiaobin0715    时间: 2021-12-29 21:35

本帖最后由 qixiaobin0715 于 2021-12-29 21:51 编辑
  1. @echo off
  2. (for /f "delims=" %%a in ('dir /b /s /a-d') do echo,%%~nxa)>abc.txt
复制代码

作者: 2013koko    时间: 2021-12-29 21:47

回复 5# qixiaobin0715


这个已经把当前路径删除了,但还想把根目录给删除,感谢!
目前显示结果为
abc\a.txt
abc\b.exe
作者: 2013koko    时间: 2021-12-29 22:10

本帖最后由 2013koko 于 2021-12-29 22:34 编辑

回复 5# qixiaobin0715


    这个将子目录路径也删除了,而且显示了当前目录下的所有文件列表,不行
我用你先前发的改了下,可以完全达到效果,只是不知有没有什么更简便的写法?无论如何,已十分感谢!
@echo off
setlocal enabledelayedexpansion

set dirpath=D:\temp\bat\abc
(for /f "delims=" %%a in ('dir /b /s /a-d %dirpath%') do (
set str=%%a
set str=!str:%dirpath%=!
echo,!str!
))>abc.txt
set dirpath=
作者: qixiaobin0715    时间: 2021-12-29 22:49

回复 7# 2013koko
现在也没搞懂你的意思:
1.你是把bat文件夹作为当前文件夹,
2.只处理abc文件夹下的文件?
3.abc文件夹下是否还有子文件夹,如果有子文件夹的话要处理其下的文件吗?
作者: 2013koko    时间: 2021-12-29 23:15

本帖最后由 2013koko 于 2021-12-29 23:30 编辑

回复 8# qixiaobin0715


1、abc是当前目录下面的一个文件夹,有子文件夹(甚至空文件夹)及文件
2、要显示abc下的所有目录(包括子目录)及所有文件
3、不显示abc(包括abc)之前的所有路径,比如说:批处理所在的当前路径为 d:\a1\a2,dir之后的
     d:\a1\a2\abc\123\456\1.txt 输出为 \123\456\1.txt 就ok
作者: qixiaobin0715    时间: 2021-12-29 23:38

回复 9# 2013koko
灵活点,你可以把先前的代码放在abc文件夹下运行不就行啦。
作者: qixiaobin0715    时间: 2021-12-30 06:43

或者:
  1. @echo off
  2. cd "abc"
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%a in ('dir /b /s /a-d') do (
  5.     set str=%%a
  6.     echo,!str:%cd%=!
  7. ))>abc.txt
复制代码

作者: 2013koko    时间: 2021-12-30 08:53

回复 10# qixiaobin0715


    嗯呢,批处理不想到处搬,宁肯设置一个绝对路径
作者: 2013koko    时间: 2021-12-30 21:45

本帖最后由 2013koko 于 2021-12-30 21:49 编辑

回复 11# qixiaobin0715

@echo off
setlocal enabledelayedexpansion

set dirpath=D:\temp\bat\abc
(for /f "delims=" %%a in ('dir /b /s /a-d %dirpath%') do (
set str=%%a
set str=!str:%dirpath%=!
echo,!str!
))>abc.txt
set dirpath=

老大,又出现一个问题,用上面的批处理,不带中文的路径ok,带了中文路径的输出为空,请问有无解决办法?
强迫症,不想移到当前路径下使用
作者: qixiaobin0715    时间: 2021-12-30 22:34

回复 13# 2013koko
那就把11楼代码第2行改为:
  1. cd /d "D:\temp\bat\abc"
复制代码
将bat文件用记事本打开,另存为ANSI编码,再试试含中文路径的目录是否可行。
作者: 2013koko    时间: 2021-12-30 22:59

回复 14# qixiaobin0715


    utf-8,ansi 都试过,不行
作者: qixiaobin0715    时间: 2021-12-31 06:46

本帖最后由 qixiaobin0715 于 2021-12-31 06:50 编辑

回复 15# 2013koko
我这里测试没问题,测试结果如下:
  1. C:\Users\Administrator>cd desktop
  2. C:\Users\Administrator\Desktop>type 1111.bat
  3. @echo off
  4. cd /d "D:\新建文件夹"
  5. setlocal enabledelayedexpansion
  6. for /f "delims=" %%a in ('dir /b /s /a-d') do (
  7.     set str=%%a
  8.     echo,!str:%cd%=!
  9. )
  10. pause
  11. C:\Users\Administrator\Desktop>tree /f D:\新建文件夹
  12. 文件夹 PATH 列表
  13. 卷序列号为 ......
  14. D:\新建文件夹
  15.     新建 TXT文件 .txt
  16. 没有子文件夹
  17. C:\Users\Administrator\Desktop>1111.bat
  18. \新建 TXT文件 .txt
  19. 请按任意键继续. . .
复制代码

作者: Batcher    时间: 2021-12-31 09:17

回复 15# 2013koko


    请把你的bat文件和目录结构打包上网盘,我试试。
作者: 2013koko    时间: 2022-1-5 10:01

回复 16# qixiaobin0715

抱歉!有事一直没上来。重启计算机后又好了 ,感谢您的回复!
作者: 2013koko    时间: 2022-1-5 10:02

回复 17# Batcher


抱歉!有事一直没上来。重启计算机后又好了 ,感谢您的回复!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2