我就给你点信心 |
有时候批处理的逻辑也有BUG,不要纠结换个命令,换个思路,只要能达到你想要的效果就行了 看下是不是你想要的效果 for %%w in (c,d,e,f,g,h,i,j,k,l,m) do if exist %%w: for /f "delims=" %%i in ('forfiles /P %%w:\ /S /M *.txt /C "cmd /c echo @PATH" 2^>nul') do echo %%i |
谢谢分享,支持原创,楼主不易,了表赞赏。 |
不懂啊,来看看 |
进来学习 |
本帖最后由 xs888 于 2024-4-18 08:23 编辑 变量赋值:确认变量 tt 在使用延迟变量之前已经正确地被赋值了。 路径格式:检查 !tt! 中的路径格式是否正确,确保没有任何错误或不规范的字符。 文件权限:确保你有足够的权限访问和处理相关文件和目录。 特殊字符:检查路径中是否包含特殊字符,可能需要进行转义或处理。 代码逻辑:仔细检查代码的逻辑,确保没有其他潜在的问题或错误。 如果问题仍然存在,你可以尝试以下方法: 添加一些调试输出,以便在执行过程中查看变量的值和流程状态。 将代码分解为更小的部分,并逐步测试每个部分,以确定问题出在哪里。 尝试在不同的环境或计算机上运行代码,看看是否有不同的结果。@echo offfor %%w in (c,d,e,f,g,h,i,j,k,l,m,z) do ( if exist %%w: ( for /r %%i in (*.zip) do echo %%~i>>pan.txt ))pause |
本帖最后由 likeyouli 于 2024-3-26 22:14 编辑 szwp 发表于 2024-3-26 16:27 刚又测试了一下,dir /a- 也可以用,dir /a- :是不是表示显示所有的文件和文件夹,包括D、R、H、A等全部属性的文件和文件夹? 貌似也可以用dir /a , 难道dir /a与dir /a- 是等价的 ? |
szwp 发表于 2024-3-26 16:27 感谢大师,, /A 显示具有指定属性的文件。 |
dir命令竟然可以这样写: dir /r /b /s /a-d c:\*.txt c:\*.jpg --学习到了,感谢! /r 显示文件的备用数据流; /b 使用空格式(没有标题信息或摘要); /s 显示指定目录和所有子目录中的文件 /a-d 这个代表啥意思 ? /a显示具有指定属性的文件, D 目录, 难道/a-d 与/ad是一个意思? 表示只是显示目录? 好像不对啊,显示的文件啊 ,, |
本帖最后由 dos时代菜鸟 于 2024-3-25 23:54 编辑
|
本帖最后由 dos时代菜鸟 于 2024-3-25 23:40 编辑 哪有那么麻烦? 而且 就楼主需求, 有没有 setlocal enabledelayedexpansion 有啥关系么?
|
去掉@echo off 在每一句后面加个pause,同时在pause前面用echo来显示每个变量的值,这样就能找到是哪一句出问题了。这是我在学习写批处理时想到的,真的很实用。 |
观摩 |
文心一言有用吗 |
观摩 |
咨询 文心一言 试试 |
有钱人啊 |
likeyouli 发表于 2024-2-23 09:24 进cmd打,将size往大了调,譬如FileSize>'15641338880' |
szwp 发表于 2024-2-23 09:01 这个有点编程语句的感觉,,倒不大像批处理了 ,, 改天有空深研究下,包括powerShell都得学学了 |
本帖最后由 likeyouli 于 2024-2-23 07:52 编辑 https://blog.51cto.com/u_8081755/3351480 里边的内容转自批处理之家,,还竟然当成自己的不让复印,, 看样子需要系统研读批处理之家的教程了 |
天使说请安静 发表于 2024-2-22 23:29 刚又搜了下 ,https://zhidao.baidu.com/question/306202773385856644.html 以下为引用: for/f中的命令如果有特殊字符需要加转义字符^,您的批处理改成这样就行了。 @echo off setlocal enabledelayedexpansion for /f "tokens=2" %%i in ('systeminfo ^|findstr "系统型号:"') do (set Model=%%i) echo %Model% |
天使说请安静 发表于 2024-2-22 23:19 不对,括号外面的 | 优先级并没有高于括号,例如 (echo select disk 0&echo list vol)|diskpart ,这个我就不知道该怎么说明了... |
likeyouli 发表于 2024-2-22 22:14 findstr默认(强制)使用正则表达式.前面的 /l 貌似并没有起作用,所以还是需要转义."" 在这里只起到囊括空格的作用. mountvol后的^是因为 | 的优先级大于括号,所以会在这里中断.批处理的符号是有优先级的,比如% 优先于 | 优先于 括号 优先于 > 等等. 至于怎么想到的,我没想到,而是以前遇到和你一样的问题,然后百度出来的.失败过很多次,然后慢慢积累过后学会有限应用了. |
天使说请安静 发表于 2024-2-22 21:17 @echo off for %%w in (c,d,e,f,g,h,i,j,k,l,m) do if exist %%w: (call :haha %%w:\) :haha for /r %1 %%i in (*.txt) do echo %%~i 直接这样写也行,感谢您,代码越来越精炼了。 /c:":\\"实际想要表达的是搜索:\, 这句话不好理解,我刚才也测试了,如果改为/c:":\",确实搜索不到:\, 只有再多加个\才可以,可是这里又不是正则表达式,而且还在“”里边,为什么需要多加个\进行转义呢 ?反正如果是我写搜索条件,我是怎么也不会想到的,, mountvol后的^也不好理解,mountvol|findstr ,这两个命令是写在括号里边的,肯定会看成一个整体执行,mountvol的结果直接传递给findstr进行查找,干嘛需要转义符 ?不加转义符,为什么for命令会在这里结束? 换句话说,系统对代码的解析到底是怎样进行的 ?您一开始怎么会想到需要加转义符的 ?您用什么样的逻辑推理,使您想到这里必须加个转义符 ? |
天使说请安静 发表于 2024-2-22 21:27 ('mountvol^|findstr /l /i /c:":\\"')的转义符是告诉For命令在这里把它当做括号内命令的一部分 如果不加转义符,for命令会在这里结束并且把 For /f %%i in ('mountvol 的运行结果直接输入到 findstr 里 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.