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

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

ただいまの
回答率

91.35%

  • Windows 7

    287questions

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

  • バッチファイル

    132questions

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

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

解決済

回答 2

投稿 2017/11/30 11:37

  • 評価
  • クリップ 0
  • VIEW 75

harrier

score 6

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

1_document 2_document・・・

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

C:\users\%%a_document

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • otn

    2017/11/30 11:41

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

    キャンセル

回答 2

checkベストアンサー

0

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

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

@echo off
setlocal enabledelayedexpansion

set /a ct=0
set /a f=1

for /f %%a in (C:\Users\Documents\temp\imagesize.txt) do (
    if %%a leq 30 (
        move C:\Users\Documents\temp\%ct%.jpg C:\Users\Documents\temp\30_document
    ) else (
        move C:\Users\Documents\temp\%ct%.jpg C:\Users\Documents\temp\%%a_document
    )
    set /a ct=ct+1
)

投稿 2017/11/30 11:40

編集 2017/12/01 17:50

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/30 12:28

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

    キャンセル

  • 2017/11/30 13:09

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

    キャンセル

  • 2017/11/30 13: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
    )

    キャンセル

  • 2017/11/30 13:18

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

    キャンセル

  • 2017/11/30 13:40

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

    キャンセル

  • 2017/11/30 15:48

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

    キャンセル

  • 2017/11/30 15:50

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

    キャンセル

  • 2017/11/30 16:01

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

    キャンセル

  • 2017/11/30 16:12

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

    キャンセル

  • 2017/11/30 16:44

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

    キャンセル

  • 2017/11/30 16:47

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

    キャンセル

  • 2017/12/01 17:43

    返信が遅れて申し訳ありません
    documentフォルダの先頭につける番号は1からの数字となっています

    またmoveするときはtemp下に30~50までの数字のみが記されたファイルがあり,1行目が35の場合には0.jpg画像が35番のフォルダに格納されるということです

    キャンセル

  • 2017/12/01 17:52

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

    キャンセル

  • 2017/12/01 18:19

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

    キャンセル

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 13:01

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/30 13:19

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

    キャンセル

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

ただいまの回答率

91.35%

関連した質問

同じタグがついた質問を見る

  • Windows 7

    287questions

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

  • バッチファイル

    132questions

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