タスク スケジューラを使用して bash スクリプトを実行する方法 (Windows 10 V1903)

タスク スケジューラを使用して bash スクリプトを実行する方法 (Windows 10 V1903)

Windows PC 上のフォルダーを、RaspberryPi に接続された外付けハードドライブに自動的に同期したいです。私のスクリプトは機能し、rsync を使用して 2 つのフォルダーをコピーするだけです。

タスク スケジューラ経由で自動化したいのですが、うまくいきません。タスク スケジューラから bash スクリプトとして直接実行しようとしましたが、思いついた別の方法も試しました。bash スクリプトを実行するバッチ ファイルを作成しました。バッチ ファイルを手動で実行するとうまくいきますが、タスク スケジューラ経由で実行するとうまくいきません。エラー メッセージなどが表示されないため、原因がわかりません。

また、フォルダーを作成する別のバッチ ファイルも作成し、それをタスク スケジューラ経由で実行したところ、問題なく動作しました。問題は、タスク スケジューラと bash に関係しているはずです。

ご協力いただければ幸いです。

Bash スクリプト:

#!/bin/bash

rsync -rtv -e "ssh -i /home/fernien/id_rsa" /mnt/g/100D3300/[メールアドレス]://mnt/share/Bilder/通常
rsync -rtv -e "ssh -i /home/fernien/id_rsa" /mnt/g/Bilder\ 編集/[メールアドレス]://mnt/share/写真/編集

このスクリプトを実行するバッチ ファイル:

さまざまなバリエーションを試しました。-c あり、-c なし、「./」あり、なし。

@エコーオフ
c:\スクリプト\
bash.exe -c "./sync.bash"

答え1

@FedonKadifeli に感謝します。問題は私のスクリプトにありました。これは手動で実行した場合は機能しましたが、理由はわかりませんでした。

@エコーオフ
c:\スクリプト\
bash.exe -c "./sync.bash"

しかし、このように見えるはずです。修正した後、問題なく動作しました。バッチ スクリプトにもっと時間を費やすべきでした。

@エコーオフ
: : : :
cd \scripts\
bash.exe -c "./sync.bash"

答え2

cdDOS バッチ スクリプトでは、コマンドのコミュテータのおかげで、1 行のコマンドでドライブとパスを変更できます/D。したがって、次のようになります。

@echo off
cd /D c:\scripts\
bash.exe -c "./sync.bash"

関連情報