[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 请教各位文件的完整路径批处理怎么表示?

set “d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\”        /*用d1表示一个路径,很长而且有空格*/
set “n1=abc.lnk”                                                                                                           /*用n1表示一个文件名*/

想在for循环的in ('more +36 %0')像::\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\abc.lnk这么调用,用d1和n1分别替代D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\和abc.lnk,该怎么表示,谢谢!写成::%d1%%n1%好像没用

  1. @echo off
  2. set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
  3. set "n1=abc.lnk"
  4. for /f "tokens=1*" %%i in ('more +8 "%~f0"') do (
  5.     call echo %%j
  6. )
  7. pause
  8. :: %d1%%n1%
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 2# gawk


    好像也不行,麻烦你给我一个for循环带有more的语法给我研究一下

TOP

回复 3# lzf_voip


    2楼的代码没有for还是没有more呢?
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

本帖最后由 lzf_voip 于 2015-5-20 12:17 编辑

回复 4# gawk


    for和more都有,这样说吧,BAT中多次需要用到一个同样的带空格的长字符串,如何在BAT文件头进行定义呢?就好比C语言中的define命令是什么,怎么用?

TOP

回复 5# lzf_voip


    看不懂你想实现什么功能。直接把有问题的完整代码发出来,我帮你改改。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 6# gawk
  1. @echo off
  2. set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
  3. set "n1=abc.lnk"
  4. for /f "tokens=1* delims=:" %%i in ('more +8  %0') do (
  5.     call echo %%j
  6. )
  7. pause
  8. ::D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\abc.lnk
复制代码
目的就是要用d1和n1来表示D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\abc.lnk,因为这个带空格的完整路径很长,而且多次要用到。

TOP

回复 7# lzf_voip


    请举个具体的例子说明一下为什么2楼那种方法不能满足你的需求
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 8# gawk


    more命令实际读出的是: 本批处理文件的路径+%d1%%n1% ,而不是一个文件的完整路径,比如: D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\abc.lnk

TOP

回复 9# lzf_voip


我这里测试没问题,可以读到。把你的测试结果发出来看看?
  1. @echo off
  2. set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
  3. set "n1=abc.lnk"
  4. for /f "tokens=1*" %%i in ('more +11 "%~f0"') do (
  5.     for /f "delims=" %%j in ('call echo %%j') do (
  6.         set "str=%%j"
  7.     )
  8. )
  9. echo %str%
  10. pause
  11. :: %d1%%n1%
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 10# gawk
  1. @echo off
  2. set "d1=D:\Program Files\"
  3. set "n1=abc.lnk"
  4. for /f "tokens=1*" %%i in ('more +11 "%~f0"') do (
  5.     for /f "delims=" %%j in ('call echo %%j') do (
  6.         set "str=%%j"
  7.     )
  8. )
  9. echo %str%
  10. pause
  11. ::%d1%%n1%
复制代码
运行就只出现一个命令提示符的框,里面没有任何字符

TOP

回复 11# lzf_voip


    批处理代码在语法上是非常严格的,你看看10楼代码最后一行的冒号后面有个空格。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 12# gawk


    呵呵,加上空格还是一样,好像都听到“嘣”的一声,就一直没动静,看不到任何字符。

TOP

回复 13# lzf_voip


    把你执行有问题的bat文件压缩之后传上来我试试
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 14# gawk


    只要在D:\Program Files\创建一个快捷方式abc.lnk就可以测试了啊

TOP

返回列表