📖

.batファイルを起動する話

2024/08/20に公開

まずはjsファイルを作成

.batファイルを作成してファイルをuploadしたい旨の実装話がきました。
内容はローカルファイルをfirebaseのStorageにupする機能です。
その際にupload先のフォルダを選べるようにしたいなと思いました。

なので、.bat起動時にupload先をターミナルで記入出来る様にしました。

// test-up.jsファイル

// コンソールから入力を読取
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// ローカルのファイル先フォルダ名
const uploadDir = 'hogehoge'

// コンソールに質問表示
rl.question('upload先フォルダ名を入力してください: ', (answer) => {
  if (answer) {
    // Storageの設定
    const bucketName = '##########.appspot.com'
    const bucket = getStorage().bucket(bucketName);

    // documentフォルダ内のファイルをStorageにアップロード
    async function main() {
      try {
        const files = fs.readdirSync(`../${uploadDir}`);
        files.map((file) => {
          const sourceFile = path.join(`../${uploadDir}`, file)
          const fileName = path.basename(sourceFile)
          bucket.upload(sourceFile,{destination: `${answer}/` + fileName});
        });
      } catch (e) {
        console.log('ファイルのuploadに失敗しました。:' + e)
      }
    }
    main().then();
  } else {
    console.log('フォルダ名の記入がありませんでした。')
  }
  rl.close();
});

上記test-up.jsファイルを作成します。

.batファイルをtextで作成

その後、.batファイルをtextで作成

@echo off
chcp 65001

pushd %~dp0\your\folder

echo 続行すると"test-up.js"を実行します。

echo.

pause

node "test-up"

echo.

echo "test-up"の実行が完了しました。

pause

exit

上記のバッチファイルの個々の意味はこんな感じです。

  • @echo off:
    バッチファイルの実行中にコマンド自体を表示しないようにします。これにより、出力がクリーンになります。
  • chcp 65001:
    コードページを65001(UTF-8)に設定します。これにより、バッチファイルがUTF-8エンコーディングを使用して文字を表示できるようになります。
  • pushd %~dp0\your\folder:
    pushdコマンドは、指定されたディレクトリに移動し、現在のディレクトリをスタックに保存します。
    %~dp0は、バッチファイルが存在するディレクトリのドライブ文字とパスを表します。
    このコマンドは、バッチファイルが存在するディレクトリの\your\folderサブディレクトリに移動します。
  • echo 続行すると"test-up.js"を実行します。:
    メッセージを表示します。ここでは、"upload-test.js"を実行することをユーザーに通知します。
  • echo.:
    空行を表示します。これにより、出力が見やすくなります。
  • pause:
    ユーザーの入力を待ちます。ユーザーがキーを押すまで処理を一時停止します。
  • node “test-up.js”:
    Node.jsを使用してtest-up.jsスクリプトを実行します。
  • echo.:
    再び空行を表示します。
  • echo "test-up.js"の実行が完了しました。:
    test-up.jsの実行が完了したことをユーザーに通知します。
  • pause:
    再びユーザーの入力を待ちます。ユーザーがキーを押すまで処理を一時停止します。
  • exit:
    バッチファイルの実行を終了します。

ファイルにターミナルからの出力をinputとoutputする方法がわからなかったので備忘録としてこちらに記載しておきます。

これやってて思ったのが、プログラミングおもしれぇです。

Discussion