コマンドプロンプトを開いて
sftp
と入力。Usageが出てくれは使用可能。
PowerShellで
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'と入力
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
State : Installed
と出てくれは使用可能
使用可能でなければ(管理者のパワーシェルで)
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
でインストールできる。
でインストールできる。
sFTPの場所は
C:\Windows\System32\OpenSSH\sftp.exe 64Bitの場合
C:\Windows\SysWOW64\OpenSSH\sftp.exe 32bitの場合
インストール状態により、System32にはあるがSysWOW64には無いとかがある。
c:\WINDOWS\system32\cmd.exe はSysWOW64を参照するので見つからないが
PowerShell だとC:\WINDOWS\system32\openssh\sftp.exe は見つけることができたり。
なんだかよくわからんけど。
-----
C++Builderで外部のSFTPクライアント(例: Windows標準のOpenSSH
sftpコマンド)をC++コード内から起動し、ファイルをアップロード/ダウンロードする方法(Copilot出力より:動作確認はしていない)#include <vcl.h>
#include <tchar.h>
#include <cstdlib> // For system()
#pragma hdrstop
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// SFTPのコマンドラインを構築
String command = L"sftp user@hostname <<EOF\n";
command += L"put C:\\local\\file.txt /remote/path/\n";
command += L"bye\n";
command += L"EOF";
// system関数を使用して実行
int result = system(command.c_str());
if (result == 0) {
ShowMessage(L"ファイルが正常にアップロードされました。");
} else {
ShowMessage(L"アップロード中にエラーが発生しました。");
}
}
#include <tchar.h>
#include <cstdlib> // For system()
#pragma hdrstop
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// SFTPのコマンドラインを構築
String command = L"sftp user@hostname <<EOF\n";
command += L"put C:\\local\\file.txt /remote/path/\n";
command += L"bye\n";
command += L"EOF";
// system関数を使用して実行
int result = system(command.c_str());
if (result == 0) {
ShowMessage(L"ファイルが正常にアップロードされました。");
} else {
ShowMessage(L"アップロード中にエラーが発生しました。");
}
}