标题: [文件操作] 请教各位文件的完整路径批处理怎么表示? [打印本页]
作者: lzf_voip 时间: 2015-5-20 08:21 标题: 请教各位文件的完整路径批处理怎么表示?
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%好像没用
作者: gawk 时间: 2015-5-20 09:37
- @echo off
- set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
- set "n1=abc.lnk"
- for /f "tokens=1*" %%i in ('more +8 "%~f0"') do (
- call echo %%j
- )
- pause
-
- :: %d1%%n1%
复制代码
作者: lzf_voip 时间: 2015-5-20 10:53
回复 2# gawk
好像也不行,麻烦你给我一个for循环带有more的语法给我研究一下
作者: gawk 时间: 2015-5-20 11:31
回复 3# lzf_voip
2楼的代码没有for还是没有more呢?
作者: lzf_voip 时间: 2015-5-20 12:15
本帖最后由 lzf_voip 于 2015-5-20 12:17 编辑
回复 4# gawk
for和more都有,这样说吧,BAT中多次需要用到一个同样的带空格的长字符串,如何在BAT文件头进行定义呢?就好比C语言中的define命令是什么,怎么用?
作者: gawk 时间: 2015-5-20 12:36
回复 5# lzf_voip
看不懂你想实现什么功能。直接把有问题的完整代码发出来,我帮你改改。
作者: lzf_voip 时间: 2015-5-22 10:59
回复 6# gawk - @echo off
- set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
- set "n1=abc.lnk"
- for /f "tokens=1* delims=:" %%i in ('more +8 %0') do (
- call echo %%j
- )
- pause
-
- ::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,因为这个带空格的完整路径很长,而且多次要用到。
作者: gawk 时间: 2015-5-25 17:07
回复 7# lzf_voip
请举个具体的例子说明一下为什么2楼那种方法不能满足你的需求
作者: lzf_voip 时间: 2015-5-27 10:54
回复 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
作者: gawk 时间: 2015-5-27 11:33
回复 9# lzf_voip
我这里测试没问题,可以读到。把你的测试结果发出来看看?- @echo off
- set "d1=D:\Program Files\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\"
- set "n1=abc.lnk"
- for /f "tokens=1*" %%i in ('more +11 "%~f0"') do (
- for /f "delims=" %%j in ('call echo %%j') do (
- set "str=%%j"
- )
- )
- echo %str%
- pause
-
- :: %d1%%n1%
复制代码
作者: lzf_voip 时间: 2015-5-27 16:34
回复 10# gawk - @echo off
- set "d1=D:\Program Files\"
- set "n1=abc.lnk"
- for /f "tokens=1*" %%i in ('more +11 "%~f0"') do (
- for /f "delims=" %%j in ('call echo %%j') do (
- set "str=%%j"
- )
- )
- echo %str%
- pause
-
- ::%d1%%n1%
复制代码
运行就只出现一个命令提示符的框,里面没有任何字符
作者: gawk 时间: 2015-5-27 17:49
回复 11# lzf_voip
批处理代码在语法上是非常严格的,你看看10楼代码最后一行的冒号后面有个空格。
作者: lzf_voip 时间: 2015-5-27 17:59
回复 12# gawk
呵呵,加上空格还是一样,好像都听到“嘣”的一声,就一直没动静,看不到任何字符。
作者: gawk 时间: 2015-5-27 19:27
回复 13# lzf_voip
把你执行有问题的bat文件压缩之后传上来我试试
作者: lzf_voip 时间: 2015-5-27 23:39
回复 14# gawk
只要在D:\Program Files\创建一个快捷方式abc.lnk就可以测试了啊
作者: gawk 时间: 2015-5-28 16:57
回复 15# lzf_voip
我的代码都是经过测试没问题才发出来的。上传你的bat文件吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |