找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 2474|回复: 2

[其他] 【已解决】【讨论】ATTRIB 获取属性,写法的错误讨论,,!,,,

[复制链接]
发表于 2025-8-2 13:44:10 | 显示全部楼层 |阅读模式
本帖最后由 jiavip 于 2025-8-2 18:00 编辑

额,请求先请各位大神原谅:我用这样的标题来求问!
我编写了一个工具脚本(是给小白用的),,代码如下,(大神一眼就看得出,就免笑了),(初版),,,,,

  1. @Echo off
  2. set 检测=%~a1
  3. Echo %检测%|Find /i "S">Nul && Set FileSX=系统,
  4. Echo %检测%|Find /i "R">Nul && Set FileSX=%FileSX%只读,
  5. Echo %检测%|Find /i "P">Nul && Set FileSX=%FileSX%固定,
  6. Echo %检测%|Find /i "V">Nul && Set FileSX=%FileSX%完整,
  7. Echo %检测%|Find /i "A">Nul && Set FileSX=%FileSX%存档,
  8. Echo %检测%|Find /i "H">Nul && Set FileSX=%FileSX%隐藏,
  9. Echo %检测%|Find /i "O">Nul && Set FileSX=%FileSX%脱机,
  10. Echo %检测%|Find /i "X">Nul && Set FileSX=%FileSX%无清理,
  11. Echo %检测%|Find /i "U">Nul && Set FileSX=%FileSX%非固定,
  12. Echo %检测%|Find /i "I">Nul && Set FileSX=%FileSX%无内容索引,
  13. Echo. 文件大小:【%~Z1 Byte】
  14. Echo. 文件属性:【%检测%】
  15. Echo. 文件属性:【%FileSX%】
  16. Pause>Nul
复制代码
脚本,采用的是获取参数定义值,拖拽、调用   来获取,,
而我反复测试了几次,发现直接点击脚本,会得出,,,,
------------------
文件大小:【 Byte】
文件属性:【】
文件属性:【隐藏,脱机,】
-------------------------------
我反复测试,后来把脚本改写成。,,,,,,(改写版),,,,,,,,,,,,

  1. @Echo off
  2. set 检测=%~a1
  3. Echo.%检测%|Find /i "S">Nul && Set FileSX=系统,
  4. Echo.%检测%|Find /i "R">Nul && Set FileSX=%FileSX%只读,
  5. Echo.%检测%|Find /i "P">Nul && Set FileSX=%FileSX%固定,
  6. Echo.%检测%|Find /i "V">Nul && Set FileSX=%FileSX%完整,
  7. Echo.%检测%|Find /i "A">Nul && Set FileSX=%FileSX%存档,
  8. Echo.%检测%|Find /i "H">Nul && Set FileSX=%FileSX%隐藏,
  9. Echo.%检测%|Find /i "O">Nul && Set FileSX=%FileSX%脱机,
  10. Echo.%检测%|Find /i "X">Nul && Set FileSX=%FileSX%无清理,
  11. Echo.%检测%|Find /i "U">Nul && Set FileSX=%FileSX%非固定,
  12. Echo.%检测%|Find /i "I">Nul && Set FileSX=%FileSX%无内容索引,
  13. Echo. 文件大小:【%~Z1 Byte】
  14. Echo. 文件属性:【%检测%】
  15. Echo. 文件属性:【%FileSX%】
  16. Pause>Nul
复制代码
得出结果,,,,,,,,,,,,,,,,,,
-------------------------------
文件大小:【 Byte】
文件属性:【】
文件属性:【】
---------------------------------------
然后回到本帖标题!,,,为什么会有这样的错误显示,,,
提交一下测试条件:WIN10,
路径:md c:\1\2\3 & Pushd c:\1\2\3 & 脚本.bat
直接点击(初版)就会有这样的错误,,
而,点击(改版),,,
就不会有那样的错误,,,
哪怕是测试路径改成,,,,,,,,,,,,
md d:\1\2\3 & Pushd d:\1\2\3 & 脚本.bat
md x?n?:\1\2\3 & Pushd x?n?:\1\2\3 & 脚本.bat
结果依旧,,,,
,,,
,,
鄙人纠结的不是脚本编写的难度,而是对这类错误提出疑问,,,
这样的写法区别,为什么?,,它获取和判断就出现了极大的偏差,,,,
到底是符号获取的判断出现,特俗符号的重合,,,,,还是?命令标写符号有误?,,,或是?管道传输有特定帅选机制?,,,
有点复杂,但又,,很迷惑,,,,,
,,
我知道脚本还可以改写成另外一种写法,,,,,
就是应用  FOR 来 列举,,,但是我现在纠结的不是写法,,,
我纠结的是为什么它会有这样的错误!
纯好奇,,,希望有份量的回复和讨论,,,
希望,大神测试过后(说白了,历经我的疑惑,再来讨论,鄙人真心不懂!),望:回复、讨论!,,,)(,,,,,,,,,,
,,,
---------------------------------编辑后话-------------
原本我也想到什么了,有点朦胧的意识,就是没点到那层,就懒得去想了,,
经过2楼一点,就破了,,,,
脚本是写给00后的员工,完善他的脚本的,,年轻人有冲劲,创意想法多,
可能是年纪大了,又有点酗酒,不喜欢太动脑了。,,哎,,!
希望,年轻人别犯我这样的更年期病症。。。,,,

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-8-2 14:54:25 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-2 15:28 编辑

回复 1# jiavip

原因如下...
   代码 echo %~a1|find /i "H" 当 %1 为空时 find 会发现 echo 输出字符串 'ECHO 处于打开状态' 中的 H 字符
   代码 echo %~a1|find /i "O" 当 %1 为空时 find 会发现 echo 输出字符串 'ECHO 处于打开状态' 中的 O 字符
   而代码 echo.%~a1 当 %1 为空时的输出亦为空,如此而已
这就是为何本人不用 echo %str% 而改用 echo,%str% 的原因,以避免当 %str% 为空时会误导后果...

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-8-2 16:30:22 | 显示全部楼层
回复 2# aloha20200628

我擦,茅厕顿开,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:47 , Processed in 0.018577 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表