我有一个与此类似的目录结构:
在“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文件单独发送到远程服务器。 工具。
我在连接两个字符串时遇到了困难。
BINARY
其名称为app.exe
。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/