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

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

[复制链接]
发表于 2015-5-20 08:21:04 | 显示全部楼层 |阅读模式
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%好像没用
发表于 2015-5-20 09:37:55 | 显示全部楼层
  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%
复制代码
 楼主| 发表于 2015-5-20 10:53:27 | 显示全部楼层
回复 2# gawk


    好像也不行,麻烦你给我一个for循环带有more的语法给我研究一下
发表于 2015-5-20 11:31:37 | 显示全部楼层
回复 3# lzf_voip


    2楼的代码没有for还是没有more呢?
 楼主| 发表于 2015-5-20 12:15:15 | 显示全部楼层
本帖最后由 lzf_voip 于 2015-5-20 12:17 编辑

回复 4# gawk


    for和more都有,这样说吧,BAT中多次需要用到一个同样的带空格的长字符串,如何在BAT文件头进行定义呢?就好比C语言中的define命令是什么,怎么用?
发表于 2015-5-20 12:36:09 | 显示全部楼层
回复 5# lzf_voip


    看不懂你想实现什么功能。直接把有问题的完整代码发出来,我帮你改改。
 楼主| 发表于 2015-5-22 10:59:25 | 显示全部楼层
回复 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,因为这个带空格的完整路径很长,而且多次要用到。
发表于 2015-5-25 17:07:46 | 显示全部楼层
回复 7# lzf_voip


    请举个具体的例子说明一下为什么2楼那种方法不能满足你的需求
 楼主| 发表于 2015-5-27 10:54:52 | 显示全部楼层
回复 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
发表于 2015-5-27 11:33:59 | 显示全部楼层
回复 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%
复制代码
 楼主| 发表于 2015-5-27 16:34:08 | 显示全部楼层
回复 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%
复制代码
运行就只出现一个命令提示符的框,里面没有任何字符
发表于 2015-5-27 17:49:31 | 显示全部楼层
回复 11# lzf_voip


    批处理代码在语法上是非常严格的,你看看10楼代码最后一行的冒号后面有个空格。
 楼主| 发表于 2015-5-27 17:59:26 | 显示全部楼层
回复 12# gawk


    呵呵,加上空格还是一样,好像都听到“嘣”的一声,就一直没动静,看不到任何字符。
发表于 2015-5-27 19:27:50 | 显示全部楼层
回复 13# lzf_voip


    把你执行有问题的bat文件压缩之后传上来我试试
 楼主| 发表于 2015-5-27 23:39:11 | 显示全部楼层
回复 14# gawk


    只要在D:\Program Files\创建一个快捷方式abc.lnk就可以测试了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 04:01 , Processed in 0.020231 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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