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

2024-01-01

我需要获取两个字符串并将它们组合成批处理文件中的单个路径字符串,类似于 .NET 中的 Path.Combine 方法。例如,无论字符串是“C:\trunk”和“ProjectName\Project.txt”还是“C:\trunk\”和“ProjectName\Project.txt”,组合路径都将为“C:\trunk\ProjectName” \项目.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

代码和示例批处理文件可以找到在我的 SVN 中 http://svn.lando.us/joey/Public/SO/3114146但在这里复制,因为它们无论如何都很简短:

@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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在批处理文件中,组合两个字符串以创建组合路径字符串 的相关文章

  • 服务器端文件验证在 Yii.2.0 中不起作用

    Is the FileValidatorYii2 中的类只支持客户端验证 我使用代码编写了文件上传系统 在模型中 public function rules return allAllowedFileType safe allAllowed
  • 检查 FTP 文件夹是否存在任何与掩码匹配的文件的批处理文件

    我需要创建一个批处理文件来访问受保护的 FTP 站点 检查文件类型 txt 存在 如果存在则进行下一步 如果不存在则返回0并结束作业 我进行了广泛的搜索 但找不到任何解决方案 这不是一项简单的任务 特别是当您需要检查与掩码匹配的文件 而不是
  • 将文件写入 Web 服务器 - ASP.NET

    我只想将 TextBox 控件的内容写入 Web 服务器目录根目录中的文件 如何指定它 请记住 我正在本地测试这个 它不断地将文件写入我的程序文件 Visual Studio Common IDE目录而不是我的项目目录 这是我假设Web服务
  • 将文件拆分为块

    我正在尝试分割格式为以下的文件 some garbage lines target G0 S0 type xy 0 108847E 02 0 489034E 04 0 108711E 02 0 491023E 04 0 108574E 02
  • 以 str.format 切片字符串

    我想实现以下目标str format x y 1234 5678 print str x 2 str y 2 我能够做到这一点的唯一方法是 print 0 1 format str x 2 str y 2 现在 这是一个例子 我真正拥有的是
  • Python,将字典存储在数据库中

    在数据库中存储和检索 python 字典的最佳方法是什么 如果您对使用传统 SQL 数据库 例如 MySQL 不是特别感兴趣 您可以研究非结构化文档数据库 其中文档自然映射到 python 字典 例如MongoDB http www mon
  • 我的代码哪里有泄漏?

    下面是我的代码 它打开一个 XML 文件 old xml 过滤无效字符并写入另一个 XML 文件 abc xml 最后 我将再次加载 XML abc xml 当执行以下行时 出现异常 表示 xml 文件被另一个进程使用 xDoc Load
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 如何用空新行分割字符串

    我的文件包含这个字符串 a b c 现在我想阅读它并用空行分割它 所以我有这个 text split n n where text is output of file 问题是这不起作用 当我将新行转换为字节时 我看到 n n 表示为 10
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • R 获取子字符串和正则表达式?

    我有一组文件名字符串 我想提取 符号之后但文件扩展名之前的所有字符 例如 文件名之一是 HelloWorld you txt 我想返回字符串you 这是我的代码 hashPos grep name fixed TRUE dotPos len
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 批处理文件 - 读取特定行,并将该行中的特定字符串保存为变量

    有没有办法让 for f 循环 或其他任何东西 读取特定行 这是我到目前为止的代码 它读取每一行的第一个单词 echo off set file readtest txt for f tokens 1 delims A in file do
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但
  • 将带撇号的字符串传递给辅助方法无法正确显示

    我正在使用 Rails 教程中的辅助方法 它将两个字符串连接在一起 以便在视图中的标题选择器中使用 它工作得很好 除非字符串中有撇号 当 group name 包含撇号时 结果如下 这是方法 app helpers application
  • 如何查找具有特定模式的文件夹和文件

    我想编写一个批处理文件 该文件将写入日志包含特定模式以及排除文件夹的所有文件和文件夹 但没有成功 ECHO OFF for r c x in david do echo x findstr f exclude txt c x gt nul
  • 过滤路径列表以仅包含文件

    如果我有一个清单FilePaths 如何过滤它们以仅返回常规文件 即不是符号链接或目录 例如 使用getDirectoryContents main do contents lt getDirectoryContents foo bar l
  • Java 中的正则表达式,\\s 与 \\s+

    下面两个表达式有什么区别 x x replaceAll s x x replaceAll s 第一个匹配单个空格 而第二个匹配一个或多个空格 它们是所谓的正则表达式量词 它们执行像这样的匹配 取自文档 http docs oracle co

随机推荐

  • 没有提交按钮的表单验证AngularJS

    我想要验证没有提交按钮的表单 div div
  • .NET 图表中的 X 轴仅使用自定义标签

    我正在用 C 制作一个 X 轴间隔为数周的 N ET 折线图 对于我的项目 我只想使用自定义标签 但现在我仍然想要网格线 有谁知道如何隐藏默认 X 轴标签 同时仍保留自定义标签 我试过这个 Chart4 ChartAreas 0 AxisX
  • 强制在子方法之前执行父方法,无需显式调用

    我正在开发一个 C 应用程序 但遇到了一个问题 我有一个从抽象类 A 派生的类 B 它具有一些事件处理方法 第三个类 C 派生自 B 并且必须重新实现 B 的一些方法 有没有一种方法可以在调用 C 的方法之前隐式调用 B 的方法 类图 cl
  • 要在 R 中列出的文本文件

    我有一个很大的文本文件 每行都有可变数量的字段 每行中的第一个条目对应于一个生物途径 每个后续条目对应于该途径中的一个基因 前几行可能看起来像这样 path1 gene1 gene2 path2 gene3 gene4 gene5 gene
  • O(n) 算法查找 n² 隐式数字的中位数

    问题 输入是一个 不一定是排序的 序列 S k1 k2 kn 由 n 个任意数字组成 考虑 min ki kj 形式的 n 个数的集合 C 其中 1 O n 时间和O n 空间算法求 C 的中位数 到目前为止 我通过检查 C 的不同集合 S
  • 如何正确对齐跨度和输入元素?

    我想对齐一个 span 元素和 span
  • 使用 WPF 的 ShowDialog 打开表单时出现异常

    我有一个 WPF 应用程序 当尝试使用以下命令打开表单时ShowDialog 我在一台机器上遇到了下面这个奇怪的异常 知道可能是什么问题吗 异常消息 操作已中止 HRESULT 异常 0x80004004 E ABORT 异常堆栈跟踪 在
  • 如何在不编写自己的程序的情况下将某些文件上传到 Azure Blob 存储?

    我创建了一个 Azure 存储帐户 我有一个 400 MB 的 zip 文件 我想将其放入 Blob 存储中以供以后使用 我怎样才能在不编写代码的情况下做到这一点 有一些接口吗 免费工具 Visual Studio 2010 安装Azure
  • 使用命名空间时找不到 SimpleXMLElement

    我正在尝试在 Wordpress 中创建一个小部件 但在创建 SimpleXMLElement 对象时遇到了问题 这是代码 namespace GenieKnows Search class GenieKnows Search Widget
  • 诊断无法停止的应用程序

    我们的Windows应用程序经常挂在内存中 我正在尝试使用windbg来跟踪 下问题 我对 Windbg 很陌生 需要一些建议 我 已经开始阅读高级 Windows 调试 该应用程序是用 VB 编写的 C 和 COM 对象的混合体 偶尔当
  • iOS 部署目标设置为 iOS 4.2。该应用程序可以在运行早期版本 iOS 的设备上运行吗?

    如果应用程序在 Xcode 中编译 其 iOS 部署目标设置为 iOS 4 2 它是否可以在运行早期版本 iOS 的设备上运行 该应用程序不具有 iOS 4 独有的功能 我全新安装了 Snow Leopard 和 XCode 3 2 5 并
  • 如何从 html 页面调用 javascript 模块 (type=module) 中声明的函数

    我正在努力使用 javascript 模块 我有一个 html 文件和一个 JS 模块 我在 javascript 文件中定义了一个函数 我想从我的 HTML 页面调用该函数 这是我的代码 索引 html
  • 使用 Reactor 的非阻塞 ReentrantLock

    我需要限制同时处理同一资源的客户端数量所以我尝试实现模拟 lock lock try do work finally lock unlock 但以非阻塞方式使用 Reactor 库 我有这样的东西 但我有一个问题 有一个更好的方法吗或者也许
  • Groovy:将 XML 元素从一个文档复制到另一个文档

    我是 Groovy 新手 遇到了一个简单的问题 我想做的就是从一个 XML 文件中提取某些元素并用它创建一个新文件 这是一个示例 XML 让我们使用 Maven pom 文件
  • 在子数组之间移动行

    我有许多子数组 比如 2 个 为了简单起见 每个子数组具有相同的行数和列数 子数组中的每个位置都由 1 10 中的数字占据 我想做的是根据某种移动速率 m 0 1 在子数组之间随机移动行 m 0 对应于不移动 而 m 1 表示所有子数组中的
  • 初始化的只读字段为空,为什么?

    谁能解释一下为什么private readonly Int32 array new 8 7 5 can be null 在这个例子中 它有效 并且 array总是不是null 但在我的公司代码中我有类似的代码并且 array总是null 所
  • 来自命令行的 Behat“base_url”

    我想知道是否可以通过命令行设置base url 例子 bin behat base url http google fr 为了灵活性 我想避免创建新的配置文件并在每次必须测试新的 url 时通过命令行传递它 这里有什么技巧可以做到这一点吗
  • 使用 Spring MVC 的 Twitter Bootstrap

    我想将 Twitter Bootstrap 与现有的 Spring MVC 项目集成 搜索返回抽象结果 没有概述如何将以 UI 为中心的 Bootstrap 与 Spring MVC 集成的教程或文章 集成框架所涉及的配置步骤是什么 Tha
  • scala zip 列表到元组

    使用 JodaTime 尝试将 List LocalDate 转换为 Tuple2 JodaTime JodaTime 这样我就可以像这样进行多重分配 val expire now List row expireDate new JodaD
  • 在批处理文件中,组合两个字符串以创建组合路径字符串

    我需要获取两个字符串并将它们组合成批处理文件中的单个路径字符串 类似于 NET 中的 Path Combine 方法 例如 无论字符串是 C trunk 和 ProjectName Project txt 还是 C trunk 和 Proj