batch-file - 连接两个字符串 'present working directory' 和 'app.exe' 文件名以构建绝对路径

标签 batch-file string-concatenation

我有一个与此类似的目录结构:

“D:\Ashwin\rev”下

rev
-->dist
---->app.exe
-->copier
---->cs
------>cs.bat
------>pscp.exe
-->Copy.bat

Copy.bat的内容是:

@echo "Starting copy"
@call "copier\cs\cs.bat"

并且cs.bat的内容还不完整。

%BINARY% = DIR /b dist\*%.exe
%ASH% = %CD%%1\dist\%BINARY% 

@call copier\cs\pscp -l root -pw ReDBuLL <What to do?> 192.168.1.16:/root/workspace

原因如下。我对批处理脚本完全陌生。 该脚本的目的是使用pscp将.exe文件单独发送到远程服务器。 工具。

我在连接两个字符串时遇到了困难。

  1. BINARY 其名称为 app.exe
  2. ASH 这是连接的 当前工作路径的字符串和 BINARY

通过这个串联的字符串,我计划将其传递给 pscp 命令并将文件传输到远程服务器。

我应该只使用 Copy.bat 来复制文件,而不是 cs.bat

这里还缺少什么?

P.S:我可以对路径进行硬编码,但这不是我想要做的。因为 app.exe 不是目录中的唯一文件,因为我将添加其他几个文件。

最佳答案

我假设您的代码来自 Linux 脚本,但在 Windows 世界中,这不是这样工作的。
不要使用空格来格式化代码(例如 %BINARY% = DIR/b dist\*%.exe),它会改变行为!
二进制和 ASH 未设置为命令的输出,内容是命令。

要获取命令的输出,通常使用 FOR/F-Loop 结构。

for/f "delims="%%A in ('DIR/b dist\*.exe') DO set "binary=%%A"

所以你的代码会更喜欢这样

@echo off
for /f "delims=" %%A in ('DIR /b dist\*.exe') Do set "binary=%%A"
set "ASH=%CD%\dist\%BINARY%"

set "PastedString=%ASH%\%BINARY%"
echo The content of PastedString is %PastedString%
call copier\cs\pscp -l root -pw ReDBuLL "%PastedString%" 192.168.1.16:/root/workspace

关于batch-file - 连接两个字符串 'present working directory' 和 'app.exe' 文件名以构建绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514424/

相关文章:

batch-file - 如何清除批处理中的选定行而不是整个屏幕?

windows - 如何确定 SVN 工作副本是否需要更新(从脚本)?

java - 如何使用 java netbeans 更新 MS Access 表中的特定行?

java - 在将 String 分解为多行时,如何设置 Eclipse 首选项以将 + 放在哪里?

batch-file - 批处理编程=当我回显时,如何使字符显示缓慢,就像您正在键入它们一样

batch-file - 批处理文件: suppress command error output when used in a for loop

Javascript:正则表达式字符串和正则表达式的区别

java - StringConcatFactory 中的策略

C++ 串联和字符串化运算符

mysql - 通过批处理文件连接到 MySQL