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 ファイルのみをリモート サーバーに送信することです。

2 つの文字列を連結するのに行き詰まっています。

  1. BINARYそのapp.exe名前があります。
  2. ASHこれは、現在の作業パスの連結文字列であり、BINARY

この連結文字列を使用して、これをpscpコマンドに渡し、ファイルをリモート サーバーに転送する予定です。

Copy.batファイルをコピーするためだけに使用する必要があり、cs.bat

ここで他に何が欠けていますか?

PS: パスをハードコーディングすることもできましたが、それは私がやろうとしていることではありません。app.exe がディレクトリ内の唯一のファイルではないため、他のファイルをいくつか追加する予定です。

4

1 に答える 1

2

あなたのコードは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
于 2012-05-09T12:03:54.913 に答える