2

我有一个类似这样的目录结构:

在下面'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

这里还缺少什么?

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

4

1 回答 1

2

我假设您的代码来自 linux 脚本,但在 Windows 世界中,这不起作用。
不要使用空格来格式化你的代码(比如 in %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
于 2012-05-09T12:03:54.913 回答