Board logo

标题: [其他] 批处理echo到txt时,如果有特殊情况一定要引号,如何在txt中没有引号 [打印本页]

作者: yunyan100    时间: 2017-12-8 21:06     标题: 批处理echo到txt时,如果有特殊情况一定要引号,如何在txt中没有引号

本帖最后由 yunyan100 于 2017-12-8 21:12 编辑

Rt,这是一个特殊路径里面有空格,(2)这些情况,当在这个目录下查找到的exe文件,就要把这个exe的路径(D:\OtherSoft\文件夹 - 副本 (2)\*.exe)写入到txt中,但因为特殊(用dir查找和for写txt),所以要"D:\OtherSoft\文件夹 - 副本 (2)\*.exe"才能写入txt,如何不写入txt中引号呢?谢谢各位专业人士
  1. (for /f "delims=" %%a in ('dir /b "%patt%\*.exe"') do ( set /a n%%=99&set /a n+=1
  2. if /i "%gg%" equ "n" (echo !n!:%%a>>%dp%\st\exe.txt)else (echo !n!:"%pat%\%%a">>%dp%\st\exe.txt)
  3. echo.                              !n!:%%a))
复制代码
  1. D:\OtherSoft\文件夹 - 副本 (2)
复制代码

作者: 0000    时间: 2017-12-8 21:36

本帖最后由 0000 于 2017-12-8 21:38 编辑

多看看for /?
  1. 另外,FOR 变量参照的替换已被增强。你现在可以使用下列
  2. 选项语法:
  3.      %~I          - 删除任何引号("),扩展 %I          <- 解决方法!
  4.      %~fI        - 将 %I 扩展到一个完全合格的路径名
  5.      %~dI        - 仅将 %I 扩展到一个驱动器号
  6.      %~pI        - 仅将 %I 扩展到一个路径
  7.      %~nI        - 仅将 %I 扩展到一个文件名
  8.      %~xI        - 仅将 %I 扩展到一个文件扩展名
  9.      %~sI        - 扩展的路径只含有短名
  10.      %~aI        - 将 %I 扩展到文件的文件属性
  11.      %~tI        - 将 %I 扩展到文件的日期/时间
  12.      %~zI        - 将 %I 扩展到文件的大小
  13.      %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
  14.                    到找到的第一个完全合格的名称。如果环境变量名
  15.                    未被定义,或者没有找到文件,此组合键会扩展到
  16.                    空字符串
  17. 可以组合修饰符来得到多重结果:
  18.      %~dpI       - 仅将 %I 扩展到一个驱动器号和路径
  19.      %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
  20.      %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
  21.      %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
  22.                    到找到的第一个驱动器号和路径。
  23.      %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR
  24. 在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
  25. 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
  26. 比较易读,而且避免与不分大小写的组合键混淆。
复制代码
----------------------------------------
  1. (
  2. for /f "delims=" %%a in ('dir /b "%patt%\*.exe"') do (
  3.   set /a n%%=99,n+=1
  4.   if /i "%gg%" equ "n" (
  5.    echo !n!:%%~a>>%dp%\st\exe.txt
  6.   ) else (
  7.    echo !n!:"%pat%\%%~a">>%dp%\st\exe.txt
  8.   )
  9.   echo.                    !n!:%%~a
  10. ))
复制代码

作者: yunyan100    时间: 2017-12-8 21:51

本帖最后由 yunyan100 于 2017-12-8 22:16 编辑

回复 2# 0000


    首先感谢你,就是for只会一点,如果只用for找出来是显示全路径,dir /b就是只显示最低的文件(夹)名,我试试,谢谢
测试了,还是有引号?

1:"D:\OtherSoft\文件夹 - 副本 (2)\Dism++.exe"
2:"D:\OtherSoft\文件夹 - 副本 (2)\Dism++x64.exe"
3:"D:\OtherSoft\文件夹 - 副本 (2)\main.exe"

感谢你的提醒,我用这段完美了,echo输出也不用引号了,因为我想起了%`nx是去掉前面的,哈哈,谢谢
  1. (for %%a in ("%pat%\*.exe") do ( set /a n%%=99,n+=1
  2. if /i "%gg%" equ "n" (echo !n!:%%a>>%dp%\st\exe.txt  ) else (   echo !n!:%%a>>%dp%\st\exe.txt  )
  3. echo.                           !n!:%%~nxa))
  4. pause
复制代码

作者: yunyan100    时间: 2017-12-8 22:26

本帖最后由 yunyan100 于 2017-12-8 22:29 编辑

回复 2# 0000


tks




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2