質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

3939閲覧

バッチ処理にて変数を用いたフォルダ指定

harrier

総合スコア14

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2017/11/30 02:37

バッチ処理を行った上でフォルダの読み込みを繰り返し行いと考えています。
ユーザ直下にあるファイルである

1_document 2_document・・・

といったファイルを順に読み込もうと考え、数字の部分をaとして変数化して読み込む際には

C:\users%%a_document

としたうえで繰り返し処理を行った上で読み込みを考えていたのですが、フォルダの読み込みが上手く出来ていない現状です。
おそらく%%a_documentとして認識されていることが原因だと考えられますが、%%aと_documentを分離した上でコンピュータへと認識させる方法をご存知の方がいらっしゃいましたらご教授お願い致します
宜しくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/11/30 02:41

「おそらく~」の部分は的外れです。スクリプトと実行結果を書いてください。
guest

回答2

0

windows10ですが、試してみたら次のようになりました。

C:\Users\koji>dir 1_*.* ドライブ C のボリューム ラベルは Windows です ボリューム シリアル番号は A262-3265 です C:\Users\koji のディレクトリ 2017/11/30 12:53 21 1_test.txt 1 個のファイル 21 バイト 0 個のディレクトリ 104,084,148,224 バイトの空き領域 C:\Users\koji>set i="1" C:\Users\koji>dir %i%_*.* ドライブ C のボリューム ラベルは Windows です ボリューム シリアル番号は A262-3265 です C:\Users\koji のディレクトリ 2017/11/30 12:53 21 1_test.txt 1 個のファイル 21 バイト 0 個のディレクトリ 104,082,620,416 バイトの空き領域 C:\Users\koji>

ttyp03さんの指摘が正しいと思います。
「変更してみたところ効果は得られず」ということなら、その変更の方法に間違いがあるのでしょう。実際にどのようなコマンドを試したのか示していただくのがいいと思います。

投稿2017/11/30 04:01

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harrier

2017/11/30 04:19

コメントありがとうございます ttyp03様のコメントのほうへコードを記載いたしました。
guest

0

ベストアンサー

%%aではなく%a%では。

追記
ようやく全貌がわかったので修正してみました。

BAT

1@echo off 2setlocal enabledelayedexpansion 3 4set /a ct=0 5set /a f=1 6 7for /f %%a in (C:\Users\Documents\temp\imagesize.txt) do ( 8 if %%a leq 30 ( 9 move C:\Users\Documents\temp\%ct%.jpg C:\Users\Documents\temp\30_document 10 ) else ( 11 move C:\Users\Documents\temp\%ct%.jpg C:\Users\Documents\temp\%%a_document 12 ) 13 set /a ct=ct+1 14)

投稿2017/11/30 02:40

編集2017/12/01 08:50
ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harrier

2017/11/30 03:28

コメントありがとうございます 変更してみたところ効果は得られず指定されたファイルが見つかりませんと表示がされています。 ファイル自体は確かに指定した場所にあり、繰り返し処理を用いないでコピーをして数字の部分を変更した場合にはしっかり動いています
ttyp03

2017/11/30 04:09

KojiDoiさんが検証してくださっている通り、%a%で間違いないです。 現状問題が発生している処理を提示していただけると、解決が早いかと思います。
harrier

2017/11/30 04:17

@echo off setlocal enabledelayedexpansion set /a ct=0 set /a f=1 for /f "delims=" %%a in (C:\Users\Documents\temp\imagesize.txt) do ( echo !ct! echo %f% if %%a leq 30 ( move C:\Users\Documents\temp\%f%_doument\!ct!.jpg C:\Users\Documents\temp\30 ) else ( move C:\Users\Documents\temp\%f%_document\!ct!.jpg C:\Users\Documents\temp\%%a ) set /a ct=ct+1 )
harrier

2017/11/30 04:18

コメントありがとうございます こちらがコードでございます
ttyp03

2017/11/30 04:40

for文を使う場合においては、「%%英字」の使い方で良いようです。 問題は恐らくfor文の使い方と思われますが、imagesize.txtのフォーマットがわからないので修正の指摘ができません。 imagesize.txtのフォーマットがどうなっていて、どのように処理したいのかコメントいただけますか。
harrier

2017/11/30 06:48

image.txtのフォーマットはdocumentファイルに入っている画像のたての大きさである1~50までの数字がファイル順(ファイル名は0からの番号)に縦に並び吐き出されておりサイズに該当するフォルダへ分けられる処理を行いたいと考えています
ttyp03

2017/11/30 06:50

1行あたりのフォーマットは、単に数字が入っているだけということでしょうか。 10 20 30 みたいな感じ?
harrier

2017/11/30 07:01

そのような形です。 説明不足で申し訳ありません
ttyp03

2017/11/30 07:12

*_documentフォルダと*.jpgの関連がわかりません。 jpegファイルは0からの連番ですよね? documentフォルダはどのような仕様でしょうか?
harrier

2017/11/30 07:44

documentフォルダが複数あり,それぞれに0からの連番で画像が複数枚入っている構造です
ttyp03

2017/11/30 07:47

documentフォルダの先頭につける番号はどのような仕様ですか? moveするときはどの番号のフォルダを対象にすればよいのでしょうか。 ファイルから読み込んだ番号でしょうか? 1行目が10なら、 10_document\0.jpg を移動する?
harrier

2017/12/01 08:43

返信が遅れて申し訳ありません documentフォルダの先頭につける番号は1からの数字となっています またmoveするときはtemp下に30~50までの数字のみが記されたファイルがあり,1行目が35の場合には0.jpg画像が35番のフォルダに格納されるということです
ttyp03

2017/12/01 08:52

ん?temp下には0からのファイル名ではないのですか? という前提で回答に修正版を追記しました。 そもそもmoveのパラメーターが逆ですよね。
harrier

2017/12/01 09:19

ttyp3さんのコードを試したところ解決いたしました! 自分の勘違いで動かなかったようです。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問