実現したいこと
Amazon s3のフォルダのls結果をWindowsコマンドプロンプトで変数に代入するバッチファイルを作成したいです。
発生している問題・分からないこと
for文でトークンに分けて%%aから始まるループ変数の4つ目の要素%%dに代入された値を
file[]という疑似配列に代入したいのですが、上手く代入されません。
for文を使って数字をインクリメントしたく、バッチでやるには環境遅延変数というものを使えばいいという情報をもとにsetlocal enabledelayedexpansionを最初に使っています。
for /fだとカウンタに当たる変数が無いように見えたのでその役割を果たす配列の添え字fcountと
配列名のfileを組み合わせて書こうとして
!file[!fcount!]!
%file[!fcount!]%
%file[%fcount%]%
などを試したのですが、期待通りに動作しませんでした。
どのように書けばよいでしょうか。
シンプルな実装方法を教えてください。
該当のソースコード
Windowsバッチファイル
1@echo off 2chcp 65001 3setlocal enabledelayedexpansion 4 5 6rem s3のlsの行数をファイルの個数とみなしてls_rowに代入 7for /f "usebackq" %%a in(`aws s3 ls s3://example-bucket-address --region ap-northeast-1 ^| find /c /v "") do set ls_row=%%a 8rem ここまでうまくいく 9 10set /a fcount=1 11 12rem 4つ目の要素%%dにs3のls結果のファイル名を格納されるので 13rem それをfile[]という配列っぽく命名した変数に代入したい 14for /f "tokens=1,2,3,4" %%a in('aws s3 ls s3://example-bucket-address --region ap-northeast-1') do ( 15rem ここでfile[]にファイル名を代入してループしたいが実際は入っていないように見える 16 set file[!fcount!]=%%d 17 set /a fcount=fcount+1 18 echo %file[!fcount!]% 19) 20 21rem 以降、格納されたfile[]についての後続処理を予定
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
変数がうまく展開・代入されない
補足
特になし
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/10/13 02:23