for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\


のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\
    • good
    • 7
この回答へのお礼

回答ありがとうございました。
うまく行きました。

お礼日時:2012/11/23 15:28

No.1 です。

No.1 補足、了解です。
調べてるうちにNo.2 さんが回答されましたが
せっかく書いたので投稿しておきます。内容はほぼ同じです。

dirコマンドが該当ファイルをみつけフルパスで1行ずつ返すのですが、(画面に現れない)
フルパス中にスペースを含み、for がこれを区切りとみなしてしまうのが原因です。
for は区切り文字が、デフォルトでスペースとタブですが、オプション delims で変更できます。

以下のようにするといいでしょう。

for /f "delims=," %%A in ('dir /b /s "c:\a aa\*.pdf"') do copy "%%A" D:\

デリミタ(区切り文字)を , にしてます。スペース以外で他の意味を持たない文字なら何でもいいんですが。
    • good
    • 3
この回答へのお礼

回答ありがとうございました。

delimsの意味が良く分かりました。
今回は回答が早かった方をベストアンサーにさせて頂きますが、貴殿の回答は、説明があって分かりやすかったです。

お礼日時:2012/11/23 15:40

for 文の拡張機能は詳しくないのにナニですが、


何をしたいのかいまいち不明なので補足願います。

for により1コずつどのような文字列を取得し DO 以降に当て嵌めて実行するのが
正常な姿なのかシミュレーションできません。

>フォルダ名にスペースがあるため、うまく動きません。
ではフォルダ名をスペースなしに変更(バッチファイル内記述も)したら
期待通りに動作するのですか?

>c:\a aa*.pdf
の部分、aa と * の間に \ が要るようにも思われますし。

環境は同じとは限りませんが、当方では「ファイルが見つかりません」になりますし。

この回答への補足

バッチファイルでの利用を考えています。

c:\a aa\*.pdf これが正解です。\が抜けてました。すみません。

スペースなしのフォルダ名aaaの場合は、期待通り作動します。

c:\a aaこれ以下にあるpdfファイルをサブフォルダ内も検索して、Dドライブにコピーするコードになります。

補足日時:2012/11/23 11:26
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC:\Windows> から C:\Windows\Win98>への変更方法

次のMS DOSプロンプトの状態から
C:\Windows>

次のMS DOSプロンプトの状態にしたい。
C:\Windows\Win98>

色々試して見ましたがうまくいきませんので、教えてください。テストした結果は以下の通りです。

C:\Windows> CD \   と入力してEnterします
C:\>CD C:\Windows\Win98  と入力してEnterします

ディレクトリーの指定が違いますと、表示されてうまくいきません。

Aベストアンサー

>C:\>CD C:\Windows\Win98  と入力してEnterします

↑で別に間違ってはいないので、"C:\WINDOWS\win98"ディレクトリが存在しないのでは?

dir c:\windows\win98

で確認してみた方が良いと思います。

Qruby "\001\376".unpack("C*") => [1, 254]の意味

"\001\376".unpack("C*") => [1, 254] の
[1, 254]ってどういう数字を意味するのですか?8ビット整数なのに配列で結果が出ていることの意味がわかりません。ご教授ください。

Aベストアンサー

"\001\376"
は、バイナリ文字列で
"C*"

バイトとして数値を取り出し配列にする
ということだと思います。
\376は、8進数で、10進にすると254になります。
見当違いだったらすみません。

Qメールのタグ(○○)の、件名ではなく本文に文章を書き込んだ状態のメールを作りたいのですが。

メールのタグ(<a href="mailto:"○○@△△>○○@△△</a>)の、件名ではなく本文に文章を書き込んだ状態のメールを作りたいのですが。

サブジェクトに指定の文章を入れる方法は、分かります。
(○○@△△?※○○についての問合せ=subject)

では、メールフォームが立ち上がった状態になった時に

【メールアドレス】
○○@△△
【件名】
※○○についての問合せ

【本文】
・名前

・住所

・電話番号

・メッセージ

と、するのはどうすればいいのでしょうか?
うまく文章がまとまらず、分かりづらいかもしれませんが
教えて下さい。よろしくお願い致します。

Aベストアンサー

bodyだそうです。

参考URL:http://www.tagindex.com/html_tag/link/a_mailto_sub.html

Q言語[C#]..フォルダ選択ダイアログで、フォルダ選択のための階層が表示されない

C#を使い、フォルダ選択のダイアログを表示させたいと思っています。WEB上に公開されていた下記コードを使い、フォルダ選択のダイアログを表示できました。
ただ、ダイアログが表示されたのはよいのですが、ダイアログ内に表示されるはずの、フォルダ選択のための階層部分が表示されません。この現象についてご存知の方、助言を頂きたくお願い致します。
また、C#は一昨日から使い初めたばかりです。初歩的なミスであった時は、どうぞお許し下さい。

フォルダ選択ダイアログの表示コード
------------------------------------------------
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "読み込むフォルダを指定してください" ;

if (fbd.ShowDialog() == DialogResult.OK)
{
txtInputFolder.Text = fbd.SelectedPath ;
}
------------------------------------------------

C#を使い、フォルダ選択のダイアログを表示させたいと思っています。WEB上に公開されていた下記コードを使い、フォルダ選択のダイアログを表示できました。
ただ、ダイアログが表示されたのはよいのですが、ダイアログ内に表示されるはずの、フォルダ選択のための階層部分が表示されません。この現象についてご存知の方、助言を頂きたくお願い致します。
また、C#は一昨日から使い初めたばかりです。初歩的なミスであった時は、どうぞお許し下さい。

フォルダ選択ダイアログの表示コード
------------------...続きを読む

Aベストアンサー

質問のコードで特に問題ありません。
ダイアログ内が何も表示されない・空だというような状態なのですか?

QUSBメモリ内のフォルダ名をログインユーザ名に書き換える

USBメモリにあるフォルダ名をログインユーザ名に書き換えるバッチファイルの作成に困っております。
現在、仕事でSleipnir1.66をUSBメモリに入れて持ち歩き、出先のPCと会社のPC、そして自宅のPCと三箇所でそのブラウザを使う事があります。
問題なのは、「USBメモリのドライブ:\Sleipnir\user\USERNAME」のドライブ名とUSERNAME部分です。
Sleipnirの環境設定がログインユーザ名ごとにフォルダが作成されそこに保存されるので、USBメモリを挿すPCが変わると当然ながらユーザ名が変わってしまいます。
今までは、手動でユーザ名を調べてそのユーザ名に書き換えていましたが、それをBATファイルで自動化できないかと考えました。

ですが、DOSが良く分かりません。
接続するPCによっては、USBメモリのドライブも変わりますし、ユーザ名を%USERNAME%で参照できるらしい事、RENでフォルダ名を変えられる事、など断片的に情報は集まりましたが、どのように処理を書けば良いのか分かりません。
やりたい事を以下に記します。(BATファイルはUSBメモリ内にあるとして)

1.USBメモリのドライブを調べる
2.ログインユーザ名を調べる
3.「1」で調べた結果:\Sleipnir\user\「2」で調べたユーザ名 に書き換えたい。

厚かましいとは思いますが、どなたか希望に沿うBATファイルを作成して頂けませんでしょうか。

説明下手ですが補足要求ございましたら仰って下さい。

USBメモリにあるフォルダ名をログインユーザ名に書き換えるバッチファイルの作成に困っております。
現在、仕事でSleipnir1.66をUSBメモリに入れて持ち歩き、出先のPCと会社のPC、そして自宅のPCと三箇所でそのブラウザを使う事があります。
問題なのは、「USBメモリのドライブ:\Sleipnir\user\USERNAME」のドライブ名とUSERNAME部分です。
Sleipnirの環境設定がログインユーザ名ごとにフォルダが作成されそこに保存されるので、USBメモリを挿すPCが変わると当然ながらユーザ名が変わってしまいます。
今まで...続きを読む

Aベストアンサー

USBメモリのルート(たとえばE:\など)にバッチを置くこととします。
また、「USBメモリのドライブ:\Sleipnir\user\USERNAME」には1つのフォルダしかないものとして、そのフォルダを書き換えます。
最後の行はおまけで、Sleipnir.exeを呼び出していますが不要なら抜いてもらってもいいです。

:----------------------------------chguser.bat
echo off
for /D %%d in (%~d0\Sleipnir\user\*) do ren %%d %USERNAME%
start %~d0\Sleipnir\Sleipnir.exe


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報