gpt4 book ai didi

file - 在批处理文件中,组合两个字符串以创建组合路径字符串

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

我需要将两个字符串合并到一个类似于 .NET 中的 Path.Combine 方法的批处理文件中的单个路径字符串中。例如,无论字符串是“C:\trunk”和“ProjectName\Project.txt”还是“C:\trunk\”和“ProjectName\Project.txt”,组合路径将是“C:\trunk\ProjectName\Project.txt”。

我曾尝试使用 PowerShell 的 join-path 命令,该命令有效,但我需要一种方法将此值传递回批处理文件。我尝试为此使用环境变量,但没有成功。我的一个选择是将所有代码移动到 PowerShell 脚本中,并完全避免批处理文件。但是,如果我必须在批处理文件中执行此操作,我该怎么做?

最佳答案

您在子进程中设置的环境变量不能传递给调用进程。进程的环境是其父进程的副本,反之亦然。但是,您可以简单地在 PowerShell 中输出结果并从批处理文件中读取该输出:

for /f "delims=" %%x in ('powershell -file foo.ps1') do set joinedpath=%%x

尽管如此,由于 PowerShell 需要大约一秒钟才能启动,因此这可能不是最佳选择。您当然可以使用以下小子程序在批处理文件中执行此操作:
:joinpath
set Path1=%~1
set Path2=%~2
if {%Path1:~-1,1%}=={\} (set Result=%Path1%%Path2%) else (set Result=%Path1%\%Path2%)
goto :eof

这只是查看第一个字符串的最后一个字符,如果它不是反斜杠,它将在两者之间添加一个 - 实际上非常简单。

示例输出:
JoinPath "C:\trunk" "ProjectName\Project.txt"
-- C:\trunk\ProjectName\Project.txt
JoinPath "C:\trunk\" "ProjectName\Project.txt"
-- C:\trunk\ProjectName\Project.txt

代码和示例批处理文件可以在 in my SVN 中找到但在此处转载,因为它们无论如何都很简短:
@echo off
echo JoinPath "C:\trunk" "ProjectName\Project.txt"
call :joinpath "C:\trunk" "ProjectName\Project.txt"
echo -- %Result%

echo JoinPath "C:\trunk\" "ProjectName\Project.txt"
call :joinpath "C:\trunk\" "ProjectName\Project.txt"
echo -- %Result%

goto :eof

:joinpath
set Path1=%~1
set Path2=%~2
if {%Path1:~-1,1%}=={\} (set Result=%Path1%%Path2%) else (set Result=%Path1%\%Path2%)
goto :eof

关于file - 在批处理文件中,组合两个字符串以创建组合路径字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114146/

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