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

[文本处理] 批处理命令for不带开关,如何转义通配符星号和问号?

[复制链接]
发表于 2023-10-10 16:04:45 | 显示全部楼层 |阅读模式

  1. :testForRaw
  2.         set i=100
  3.         for %%a in (
  4.                 "~"
  5.                 "`"
  6.                 "!"
  7.                 "@"
  8.                 "#"
  9.                 "$"
  10.                 "%"
  11.                 "^"
  12.                 "&"
  13.                 "*"
  14.                 "("
  15.                 ")"
  16.                 "-"
  17.                 "_"
  18.                 "+"
  19.                 "["
  20.                 "]"
  21.                 "{"
  22.                 "}"
  23.                 ""
  24.                 "|"
  25.                 ":"
  26.                 ";"
  27.                 """"
  28.                 "'"
  29.                 "<"
  30.                 ">"
  31.                 ","
  32.                 "."
  33.                 "?"
  34.                 "/"
  35.                 "C:\Windows\System32\C_114?.NLS"
  36.                 "s(^^)*s"
  37.                 "a"
  38.                 "b c"
  39.                 "b
  40.                 c"
  41.                 ; "Data"=hex:
  42.                 ; " "Data"=hex: "
  43.                 ; ""Data"=hex:"
  44.                 ; "HKEY_CURRENT_USER\Control Panel"
  45.                 con
  46.                 "con"
  47.                 " " "
  48.                 """
  49.                 """
  50.         ) do (
  51.                 set /a i+=1
  52.                 call set "Key%%i%%=%%~a"
  53.         )
  54.         set Key
  55. @goto :EOF
复制代码
代码如上,* 会匹配成当前目录下任何文件,? 会匹配成任何单个字符。
我想取消它两的特殊作用,能否把它们转义了?
发表于 2023-10-10 17:38:54 | 显示全部楼层
发表于 2023-10-10 18:22:53 | 显示全部楼层
你这是英文的?*这个是不允许在文件名里面的吧  也就是说转义了也没用
中文的?做不了通配符吧   
中文和英文的*好像是一样的
发表于 2023-10-11 02:11:12 | 显示全部楼层
本帖最后由 Nsqs 于 2023-10-11 02:21 编辑
  1. @echo off
  2. set n=100
  3. for /f "delims=" %%1 in ('PowerShell -noprofile -executionpolicy bypass "$Read=gc '%~f0';$Read|select -Skip ($Read|Select-String '^::ps').LineNumber|out-string|iex"')do set /a n+=1&call set #Key%%n:~1,3%%=%%1
  4. set #Key
  5. pause
  6. goto :eof

  7. %你的代码1...%
  8. %你的代码2...%
  9. %你的代码3...%
  10. %你的代码666...%


  11. ::ps 从这一行开始最好放在最后一行
  12. data {
  13.     '~'
  14.     '`'
  15.     '!'
  16.     '@'
  17.     '#'
  18.     '$'
  19.     '%'
  20.     '^'
  21.     '&'
  22.     '*'
  23.     '('
  24.     ')'
  25.     '-'
  26.     '_'
  27.     '+'
  28.     '['
  29.     ']'
  30.     '{'
  31.     '}'
  32.     '\'
  33.     '|'
  34.     ':'
  35.     ';'
  36.     "'"
  37.     '<'
  38.     '>'
  39.     ','
  40.     '.'
  41.     '?'
  42.     '/'
  43.     'C:\Windows\System32\C_114?.NLS'
  44.     's()*s'
  45.     'a'
  46.     'b c'
  47.     '"b '
  48.     'c"'
  49.     ' "Data"=hex:'
  50.     ' "Data=hex: '
  51.     ' """Data"=hex:"'
  52.     ' "HKEY_CURRENT_USER\Control Panel"'
  53.     'con'
  54.     'con'
  55.     ' " '
  56.     '"'
  57. }
  58. #下边就不要再写bat代码了,否则PowerShell读取不是你想要的数据了
复制代码
大致模拟,毕竟不懂你的逻辑
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:33 , Processed in 0.018356 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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