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

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

  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到变量里的路径是无效的,但是之前打印出来是没有问题的,请问这个是为什么呢?

参照以下代码找为什么
cd/d %windir%
call echo,%%cd%%
for /f "tokens=* delims=" %%i in ("%~dp0")do (
pushd %%~fi
call echo,%%cd%%
)
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 1# yangyedong


    用了变量延迟,变量用!,别用%
启用变量延迟的情况下,%CD%一直是复合语句前的活动路径,而不是PUSHD后的路径。
想要访问PUSHD后的路径,用!CD!

TOP

回复 3# yhcfsr


    我明白了!!我想当然了把当前路径就写成%cd%了。。主要不熟悉延迟延迟变量

TOP

感谢楼上两位大佬的提醒!!我后来仔细看了网上关于“变量延迟”的文档,终于明白是批处理的预处理机制造成的,不管是启动延迟变量的方式或者使用call,都可以解决我的问题,非常感谢!!

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

TOP

返回列表