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

[文件操作] PUSHD变量路径失败了,有谁能解惑一下嘛。。

[复制链接]
发表于 2017-12-25 15:59:28 | 显示全部楼层 |阅读模式
  1. @echo off & setlocal EnableDelayedExpansion

  2. For /F "Delims=" %%i In (test.cfg) Do (
  3. set file=%%~fi
  4. echo !file!
  5. pushd !file!
  6. echo %cd%
  7. )
  8. pause
复制代码
不知道为什么,pushd到变量里的路径是无效的,但是之前打印出来是没有问题的,请问这个是为什么呢?
发表于 2017-12-25 19:23:26 | 显示全部楼层
参照以下代码找为什么
cd/d %windir%
call echo,%%cd%%
for /f "tokens=* delims=" %%i in ("%~dp0")do (
pushd %%~fi
call echo,%%cd%%
)
发表于 2017-12-25 22:30:28 | 显示全部楼层
回复 1# yangyedong


    用了变量延迟,变量用!,别用%
启用变量延迟的情况下,%CD%一直是复合语句前的活动路径,而不是PUSHD后的路径。
想要访问PUSHD后的路径,用!CD!
 楼主| 发表于 2017-12-28 10:11:46 | 显示全部楼层
回复 3# yhcfsr


    我明白了!!我想当然了把当前路径就写成%cd%了。。主要不熟悉延迟延迟变量
 楼主| 发表于 2017-12-28 15:24:51 | 显示全部楼层
感谢楼上两位大佬的提醒!!我后来仔细看了网上关于“变量延迟”的文档,终于明白是批处理的预处理机制造成的,不管是启动延迟变量的方式或者使用call,都可以解决我的问题,非常感谢!!

另外,关于批处理FOR语句的应用我在网上找到的一片文章通过描述批处理的内在机制把很多问题都描述的通俗易懂,大家可以参考一下。
链接:
https://max.book118.com/html/2017/0106/80706293.shtm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 22:16 , Processed in 0.018395 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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