gpt4 book ai didi

batch-file - 剥离驱动器号

转载 作者:行者123 更新时间:2023-12-03 12:42:46 25 4
gpt4 key购买 nike

通过使用来自 D: 驱动器文件夹的命令

for /f "delims="  %%d in ('cd') do set pathdrv=%%d

echo %pathdrv%

我得到“d:\some folder”。我想编写批处理命令以在驱动器的根目录中创建自动运行文件。请帮我去掉驱动器号“d:”,所以输出是“\some folder”,我做了什么额外的更改来去掉“\”。

最佳答案

简短回答:使用子字符串语法从 %cd% 中去除前两个字符伪变量:

%cd:~2%

也删除第一个反斜杠:
%cd:~3%

当控制台窗口设置为光栅字体时,即使使用 Unicode 路径也能可靠地工作。

更长的答案,详细说明了更多的选项(没有一个工作得足够好):

对于批处理文件的参数,您可以使用特殊语法 %p1 ,它为您提供批处理文件的第一个参数的路径(请参阅 this answer )。

这与环境变量的工作方式不同,但您可以使用两个技巧:
  • 使用子程序:
    call :foo "%cd%"
    ...
    goto :eof
    :foo
    set result=%~p1
    goto :eof

    子程序可以有参数,就像批处理文件一样。
  • 使用 for :
    for %%d in ("%cd%") do set mypath=%%~pd

  • 但是,这两种变体在以下情况下都不起作用
  • 控制台设置为“光栅字体”,而不是 TrueType 字体,例如 Lucida Console 或 Consolas。
  • 当前目录包含Unicode字符
  • 在当前的遗留代码页中没有表示(对于西方文化,CJK 是一个不适合的不错选择)。请记住,在这种情况下,您只会得到问号而不是字符。

  • 这样做的问题是,虽然环境变量可以很好地保存 Unicode,但一旦您尝试设置设置它们的命令行,就会遇到问题。上面详述的每个选项都依赖于在执行命令之前某种类型的输出。这有一个问题,即 Unicode 没有被保留,而是被 ? 取代。 .唯一的异常(exception)是此答案开头的子字符串变体,即使使用光栅字体,它也会在路径中保留 Unicode 字符。

    关于batch-file - 剥离驱动器号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005209/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com