【问题标题】:read from a .txt file in BATCH, without using literal path从 .txt 文件中读取 BATCH,而不使用文字路径
【发布时间】:2018-11-23 06:15:07
【问题描述】:

基本上,我想使用type 命令,但我无法提供实际路径。 目前我的尝试是

type "./TESTS/Test1.txt"

但我假设因为它是相对路径,所以它不能工作。 我在copyxcopy 遇到了同样的问题。

我一直无法解决这个问题或在网上找到任何东西。 有没有办法做到这一点?

编辑: 澄清一下,我正在尝试获取我的 .bat 文件,以读取位于子文件夹中的 .txt 文件的内容(意味着子文件夹和 .bat 文件位于同一文件夹中),并将其打印到控制台。

【问题讨论】:

  • 命令需要知道在哪里可以找到要处理的文件。您可以使用相对路径,但必须有一些绝对起点。您需要注意,脚本的路径、当前工作目录的路径和要处理的文件的路径是三个不同的东西。不过首先需要说明一下你的情况,因为你现在的帖子不清楚,所以很难帮你...
  • ./,或正确使用 Windows 路径分隔符 .\ ,仅与当前工作目录相关,而 cmd.exe 完全不需要,Type "TESTS\Test1.txt" 的功能完全相同。您需要更好地解释您希望实现的目标,因为如果您不告知解释器名称以及(如有必要)其位置,您如何期望它知道Type 的内容?

标签: batch-file path


【解决方案1】:

由于您现在已经编辑了您的问题,但似乎没有对我之前的评论提供反馈,因此将其作为答案。

Windows 及其命令解释器,cmd.exe 使用反斜杠 \ 作为其路径分隔符。

尽管许多命令似乎可以互换地接受正斜杠,但Type 不是其中之一。

另外 .\ 仅与当前工作目录相关,而在 cmd.exe 中是不必要的,虽然有效

因此,以下内容应按您的预期工作:

Type TESTS\Test1.txt

Type "TESTS\Test1.txt"

Type .\TESTS\Test1.txt

Type ".\TESTS\Test1.txt"

如果在批处理文件中接收到您正在使用的位置并带有正斜杠,您可以将其设置为一个变量,然后扩展该变量,用正斜杠替换反斜杠:

Set "Variable=./TESTS/Test1.txt"
Type "%Variable:/=\%"

根据我们看不到的代码,可能有必要先导航到批处理文件目录,因为在调用这些命令时它可能不一定是当前工作目录.

为此使用:

CD /D "%~dp0"

【讨论】:

    【解决方案2】:

    %~dp0 提供您的批处理文件所在的文件夹(包括最后一个\)(当然只能在批处理文件中使用)。所以:

    type "%~dp0Test\test1.txt"
    

    正是你想要的:<folder_where_my_batchfile_is\><subfolder_Test>\<File_test1.txt>
    独立于您的“工作文件夹”(批处理文件可能有 cdpushd 到)。

    【讨论】:

      【解决方案3】:

      使用%CD% 基本上不会起作用吗?比如TYPE "%CD%/Subfolder/Test1.txt"%CD% 是“当前目录”的 windows 变量,应该设置为批处理文件所在的任何目录,因为您尝试访问同一目录中的文件夹,所以这应该可以工作。但是,您的问题很不清楚,我希望我没有误解。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多