位置情報で子どもの居場所をお知らせ

バッチファイルで指定フォルダ以下のフォルダ名を表示したいのですが、うまく表示出来ません
どなたか詳しい方知恵をお貸しいただけませんでしょうか

search.batファイルは以下です

@echo off
for %%a in (C:\testbat\test\*) do set X=%%a&call :sub
goto :eof
:sub
set Y=%X:~0,8%
echo "%Y%"

検索したいフォルダ構成は以下のとおりです

c:\testbat ここにsearch.batを置きます
c:\testbat\testの中にあるフォルダの名前を取得したいです(実際にはフォルダ数は100個ほど)
その各フォルダ名の8文字目までを取得して表示させようとしていま


どなたか知恵のある方、このバッチの方法でなくとも、testフォルダの中に格納されているフォルダの名前を取得する方法をご存知の方いらっしゃいましたら是非ご回答お願いいたします

どうぞよろしくお願いいたします

A 回答 (2件)

こんばんは



例示されたバッチの2行目を次のように書き換えてみてください。
for %%a in (C:\testbat\test\*) do set X=%%a&call :sub

for /D %%a in (C:\testbat\test\*) do set X=%%a&call :sub
    • good
    • 4

dir .\test /ad /b



でどうでしょう?

この回答への補足

sssrrrrさま

ご回答いただき大変ありがとうございます
大変参考になりました


ひとつお伺いしたいのですが、上記の場合、どのようにひとつひとつのフォルダの名前を変数に格納したら良いのでしょうか?

私の説明が悪かったのですが、test以下のフォルダ名を一度変数に格納し表示させたいので、もしご存知でしたら、ひとつひとつのフォルダの名前を変数に格納する方法でも可能でしたら教えていただけますでしょうか

どうぞよろしくお願いいたします

補足日時:2009/06/02 01:17
    • good
    • 0

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

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

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

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

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qバッチファイル 二つ上のディレクトリのパス取得

"C:\test\sample\a.bat"を実行した時 %~dp0 で C:\test\sample\ と展開できるのですが、
この時 C:\test\ というパスを取得するにはどうすればいいでしょうか?
バッチファイルから二つ上のディレクトリのパスを取得する方法を教えていただきたいです。
よろしくお願いします。

Aベストアンサー

C:\test\ という名前が欲しいのであれば、

set A=%~dp0
set A=%A:~0,-2%
for %%A in (%A%) do set A=%%~dpA
echo %A%

アクセスするだけであれば、他の方のように .. で。

そういう意味では、下記でも良いですね。この場合は、C:\test\ でなく、C:\test が得られます。

pushd %~dp0..
set A=%CD%
popd
echo %A%

QDosバッチでファイルパスからフォルダパス取得

Dosバッチで引数指定されるファイルパスからフォルダパス部分を抜き出したいと思っています。

例)----------------------------------------------
「C:¥hoge1¥hoge2¥a.txt」が引数で指定されてきた場合、
「C:¥hoge1¥hoge2¥」の部分を変数に格納したい
-----------------------------------------------

ちなみに、指定されてくるパスは不規則です。

どなたか良い方法をご存知でしたらご教授宜しくお願い致します。

Aベストアンサー

わざわざ 2回参照するまでもなく
%~dp1
でよかったりします>#2.

QXCOPYで指定したフォルダとファイルをコピーしたい

C:\AAAフォルダとC:\AAA以下のファイルをコピーしたくて、
XCOPY C:\AAA D:\BBB /E
とすると、コピー先のD:\BBBにはAAAフォルダにあるファイルはコピーされるのですが、AAAフォルダそのものはコピーされません。
XCOPY C:\ D:\BBB /E
とすればコピーできるのですが、そうするとC:\のほかのフォルダもコピーされてしまいます。
EXCLUDEオプションを使うには指定するファイルが多いため、あまり使いたくありません。(コピーする前にMDでコピー先にAAAフォルダを作成するのもなるべく避けたい)
知っている方がいらしたら教えて下さい。

Aベストアンサー

xcopy /e C:\AAA D:\BBB\AAA
複数ファイルのコピーでコピー先が存在しないとき、ファイル名と見なすかディレクトリ名と見なすか聞いてきます。

応答を聞かれるのが嫌なら
echo d | xcopy /e C:\AAA D:\BBB\AAA
でいいはず。

Qコマンドプロンプトによるフォルダ内のファイル存在有無

バッチ処理で、特定のフォルダ内(配下にフォルダとファイルが混在している)でファイルだけの存在有無を調べて、ファイルが存在している場合とファイルが存在していない場合で処理を別々に行わせようとしたいのですが、ファイルの存在有無はどのようにコマンドで調べれば良いでしょうか?

DIR C:\test\*.* でファイルを調べて、ERRORLEVELでif判定させようと思っているのですが、 DIRコマンドでこれを行うと、フォルダまで表示されます。

どのようにしたら良いのでしょうか?教えてください。

Aベストアンサー

コマンドプロンプトで、「DIR /?」と入力すれば、DIRコマンドのヘルプが表示されます。

その記述によれば
「/A」属性スイッチで、必要な属性を持つファイルを指定できます。

Qバッチファイルで改行の出力

バッチファイルで,改行のみをファイルに追記したいのですがどのようにすればできますか?
echo >> output.txt
とすると「ECHO は <OFF> です。」と出力されてしまいます.
全角を出力すれば見た目は同じですが,純粋に改行のみの出力方法をお願いします.

Aベストアンサー

下記のうちどれでも出来ます。

echo.>> output.txt
echo,>> output.txt
echo:>> output.txt
echo;>> output.txt

Qバッチでテキストファイルから任意の行のみ取得したい

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?

findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qバッチファイル 文字列にスペースがある場合

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

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

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

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

Aベストアンサー

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:\

QBatch: フォルダ内の特定のファイル以外を全て削除

こんにちは。

件名通りなのですが、フォルダ内のファイルや
サブフォルダを特別な数個のファイルを残して全て削除したいのです。

残すファイルの拡張子は *.mdb です。
例を挙げると以下のような状態で、mdbファイル以外
全てのファイル、Bフォルダも全部消したいのです。

A--- 1.mdb   2.mdb aaa.txt  bbb.doc  ccc.html
|----B(フォルダ) ddd.pdf  eee.xls

拡張子を指定すれば、と思ったのですが、どんな拡張子の
ファイルが放り込まれているのかわかりません。
またフォルダもどんな名前のフォルダが作成されているか
予測できません。

全部消す & *.mdb を除く のような構文があればいいのですが
可能かどうか、可能であれば、教えていただけないでしょうか?
よろしくお願いします。

Aベストアンサー

バッチファイルを作って実行します。

cd \A
for /r %%F in (*) do if /i "%%~xF" neq ".mdb" del "%%F"
for /r /d %%D in (*) do rd "%%D"

はじめのfor文でファイルを全部リストアップして拡張子が .mdb 以外のものを削除します。
次のfor文でディレクトリを全部リストアップして rd で削除します。.mdb ファイルが残っており空ディレクトリでなければ削除されません。エラーメッセージがでますけど気にしなければいいです。メッセージがいやなら、
for /r /d %%D in (*) do rd "%%D" 2>NUL
にすればいいです。

詳しくは、for /? や if /? 等を見てください。


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

人気Q&Aランキング