标题: [文件操作] 【已解决】批处理for /f命令闪退问题 [打印本页]
作者: dimo 时间: 2021-10-6 23:34 标题: 【已解决】批处理for /f命令闪退问题
最近写了一个批处理,执行之后闪退了。经过排查发现是一个for语句处问题。现在把有关的代码截取如下:- set /p w= input w:
- pause
- for /f "tokens=* delims= " %%i in (' dir %w% /a-d /b /s | findstr /E ".exe$" ') do echo "%%~nxi"
- pause
复制代码
一执行到这个for /f程序就闪退。后来又试了很多次,确定只是in后面括号里有问题。然后我又改了第3行改成:- for /f "tokens=* delims= " %%i in (' dir %w% /a-d /b /s ') do echo "%%~nxi"
复制代码
这样就没有问题了,但是输出的就不是想要的exe后缀的文件名了。我个人认为貌似是“|”字符的问题。
拜托各位大佬看一下到底是什么出问题,应该如何改正。
作者: zzz19760225 时间: 2021-10-7 00:12
抄的一个内容,出处找不到了。好像就是在|前面加上^(shfit+6那个)
自身有多少行- @echo off
- for /f %%i in ('type %~f0 ^| find /c /v ""') do (
- echo %%i>0.txt
- )
- pause
复制代码
要不你试试
作者: dimo 时间: 2021-10-7 09:59
回复 2# zzz19760225 谢谢提醒,确实好用了
后来去看了一下符号大全,确实^有取消转义的作用。
符号大全http://bbs.bathome.net/thread-1205-1-1.html#pid25363
作者: Batcher 时间: 2021-10-7 13:31
回复 1# dimo
参考:批处理for命令中的管道符为何要用尖号^进行转义?
http://bbs.bathome.net/thread-1290-2-1.html#pid6306
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |