【问题标题】:batch script to set a variable with the current path location使用当前路径位置设置变量的批处理脚本
【发布时间】:2011-10-10 23:53:32
【问题描述】:

如何使用当前位置设置变量?例如,如果我进入c:\test 并将变量设置为test,如果我进入c:\test\test2,则变量将设置为test2

我正在考虑使用for 进入很多文件夹并检查是否存在某些文件,如果存在正确的文件我想将当前文件夹设置为一个变量,以便我可以复制路径并复制文件夹。

涉及复制其余文件的主要问题是与 .inf 文件位于同一文件夹。

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    当前目录位于“影子”变量 cd 中。
    你可以试试

    set "var=%cd%"
    

    【讨论】:

    • 谢谢,成功了!!虽然我该怎么做才能进入文件夹和子文件夹以及每个级别,但他将变量添加到 %cd% .. 所以变量中获取的每个文件夹都将是当前路径..
    • 这适用于像我这样的人,只是在 = 旁边添加了额外的空格。 set "var = %cd%" 必须删除空格。
    • 对于那些完全不熟悉 DOS 批处理脚本的人来说,知道这个例子中的 var 应该替换为你为变量选择的任何名称可能会有所帮助,而 %cd % 应保持原样。例如:set "currentDirectory=%cd%。然后在别处将变量用作%currentDirectory%。如前所述,请勿在此命令中添加空格。
    【解决方案2】:
    %~dp0
    

    这将扩展为当前运行的批处理文件的驱动器和路径。我通常用类似这样的东西包围我的批处理文件:

    @echo off
    pushd %~dp0
    
    ...
    
    popd
    

    编辑:好像没看懂OP。我的示例获取当前正在运行的脚本的位置,而不是“当前目录”。 +1 给杰布。

    【讨论】:

    • %~dp0 可以是当前位置,但前提是批处理文件位于当前目录中。但是您的回答很有帮助,因为这通常是要求
    • @massaki:它在命令提示符下不起作用;它仅适用于批处理文件。 %dp0 是批处理文件第 0 个参数的驱动器和路径,即批处理文件本身的完整路径。
    • FWIW 我来这里是为了寻找你提供的答案——所以 OP 的标题足够接近我点击了链接。谢谢。
    • 我也是,Basic。我尝试了 jeb 的命令,但后来意识到你的命令在我的脚本中更有效。谢谢大家。
    【解决方案3】:

    我认为这里有些混乱。 %CD% 始终拥有当前目录,因此您无需添加任何内容即可拥有它。但是,通过重新阅读您的原始问题,我认为您需要当前目录的最后一部分,即当前位置的名称,不包括以前的所有位置。如果是这样,那么你可以使用这个:

    set i=0
    :nextdir
    set /a i+=1
    for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir
    echo Current location: %lastdir%
    

    【讨论】:

    • 我意识到这已经很老了,但只是想让你知道这个错误:delims=\" 在这个时候是出乎意料的。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多