标题: [文本处理] 【已解决】批处理想在当前目录显示子目录下文件的指定行,却报错系统找不到文件 [打印本页]
作者: c755731262 时间: 2015-1-23 09:31 标题: 【已解决】批处理想在当前目录显示子目录下文件的指定行,却报错系统找不到文件
本帖最后由 c755731262 于 2015-1-24 09:06 编辑
- @echo off&color f0&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b b\*.txt') do (
- set n=0
- for /f "delims=" %%j in (%%i) do (
- set /a n+=1
- if !n!==2 echo %%j
- )
- )
- pause>nul
复制代码
而下面的代码却没问题,不知道上面的代码出错原因在哪- @echo off&color f0
- setlocal enabledelayedexpansion
- rem usebackq参数添加进去后,会把文件名里面有空格的也列举出来
- for /f "delims=" %%h in ('dir /b *.txt') do (
- set n=0
- for /f "usebackq delims=" %%i in ("%%h") do (
- set /a n+=1
- if !n!==2 (echo %%i)
- )
- )
- pause
复制代码
作者: pcl_test 时间: 2015-1-23 10:21
本帖最后由 pcl_test 于 2015-1-23 11:12 编辑
回复 1# c755731262 复制代码
这是什么路径??
作者: c755731262 时间: 2015-1-23 10:38
回复 2# pcl_test
查找指定目录下的文件,只显示文件名和扩展名
作者: pcl_test 时间: 2015-1-23 10:44
回复 3# c755731262
代码的作用是知道的,说的是你的路径错了
作者: c755731262 时间: 2015-1-23 11:04
回复 4# pcl_test
第二个代码 测试过的路径没错,文件和代码处在同一个目录里面
作者: pcl_test 时间: 2015-1-23 11:11
回复 5# c755731262
路径的问题你还没搞懂,你的第二段代码使用的是相对路径,查找的是跟批处理文件在同一目录里的txt文件,是没有问题的,你的第一段代码的路径就不知是什么了,所以会提示错误
你的第一段代码路径复制代码
你的第二段代码路径复制代码
作者: c755731262 时间: 2015-1-23 18:28
回复 6# pcl_test
批处理想在当前目录显示子目录下文件的指定行,当前目录和文件夹b在同一个目录下,子目录是b目录
作者: c755731262 时间: 2015-1-23 18:36
回复 6# pcl_test
路径换成绝对路径也不行
作者: pcl_test 时间: 2015-1-23 19:40
本帖最后由 pcl_test 于 2015-1-23 19:47 编辑
回复 7# c755731262
如果b表示是子目录,那么在路径中也要添加- @echo off&color f0&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b b\*.txt') do (
- set n=0
- for /f "usebackq delims=" %%j in ("b\%%i") do (
- set /a n+=1
- if !n!==2 echo %%j
- )
- )
- pause>nul
复制代码
- @echo off&color f0&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b b\*.txt') do (
- pushd b\
- set n=0
- for /f "usebackq delims=" %%j in ("%%i") do (
- set /a n+=1
- if !n!==2 echo %%j
- )
- popd
- )
- pause>nul
复制代码
- @echo off&color f0&setlocal enabledelayedexpansion
- cd /d b\
- for /f "delims=" %%i in ('dir /b *.txt') do (
- set n=0
- for /f "usebackq delims=" %%j in ("%%i") do (
- set /a n+=1
- if !n!==2 echo %%j
- )
- )
- pause>nul
复制代码
作者: CrLf 时间: 2015-1-23 20:44
楼主可能没看懂 pcl_test 的判断,简单解释一下:
dir /b b\*.txt 得到的结果只有 b 文件夹下的文件名,而不含具体路径,所以 for 理解 "%%i" 的时候想当然地在当前目录中寻找这些文件,那结果当然是错的
作者: c755731262 时间: 2015-1-24 09:04
回复 9# pcl_test
谢谢你的一直关注,获益匪浅。。。
作者: c755731262 时间: 2015-2-10 10:01
回复 10# CrLf
奇怪为什么有时候却没报错如这个- @echo off&color f0
-
- setlocal enabledelayedexpansion
-
- rem usebackq参数添加进去后,会把文件名里面有空格的也列举出来
-
- for /f "delims=" %%h in ('dir /b *.txt') do (
-
- set n=0
-
- for /f "usebackq delims=" %%i in ("%%h") do (
-
- set /a n+=1
-
- if !n!==2 (echo %%i)
-
- )
-
- )
-
- pause
复制代码
作者: c755731262 时间: 2015-2-10 10:04
回复 12# c755731262
刚才发错了,是这个- @echo off&color f0
- (for /f "delims=" %%i in ('dir /b a') do (
- for /f "delims=" %%j in (%%i) do (
- echo %%j
- )
- )
- )>>999.txt
复制代码
代码和目录在同一个目录下,但可以正常运行,按理说要在内循环加路径
作者: miqilaosu 时间: 2019-6-16 09:49
回复 13# c755731262
dir /b /a
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |