SFTPサーバー内のすべてのファイルをリストし、それをファイルに出力するスクリプトがあります(別のスクリプトで使用されます)。必要な出力を生成するコマンドは次のとおりです。
echo ls | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt
これは、Windows タスク スケジューラによって 1 日に数回呼び出されます。何らかの理由で、このコマンドを (.bat ファイルで) スケジュールし、 user を介して実行するSYSTEM
と、出力ファイルには次の内容のみが含まれます。
Remote working directory is /
psftp> quit
別のユーザーを使用している場合、出力は期待どおりです (すべてのファイルのリスト)。SYSTEM
それをスクリプト化し、そのシステムの残りのスクリプトと同じように実行できる方法が必要です。私も以下を試しました:
psftp -l myusername -pw mycomplexpwd FTPServerHostname < C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt
と:
psftp -l myusername -pw mycomplexpwd FTPServerHostname -b C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt
lscmd.txt には以下が含まれます。
ls
そして、動作は同じです。EDIT : 以下のMartinが示すように、以下は同じ出力を生成せず、ファイルに触れていない可能性があります。ただし、期待される結果は生成されませんでした。
必要な動作を行うためにできることはありますか?
OSはWindows Server 2012 R2です。