[前の記事]« システムファイルも含めたディスク丸ごとコピーはXCOPYで可能?
[次の記事]AltキーやEnterキーの自動入力は可能? »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ
▲カテゴリー「FOR .. IN ( ) DO..」索引へ
▲カテゴリー「FOR /F」索引へ

『DIR /B』で取り出したファイル名リストを1行にまとめる方法


742) 文字列操作について おむすけ 2002/10/03(木) 09:47


はじめまして、おむすけと申します。
バッチを作成していて、よくわからないことがあります。
ご存知の方よろしくお願いします。
ファイル名を 『DIR /B』 で取り出し、アクロバットでプリントするバッチを作成しているのです。ファイル名を書き出したファイルにSEDのツールで 『ACRORD32.EXE  /P』 等を書き加え、そのファイルをバッチ化して実行することによって、NT系での動作することができました。しかし、98系でこれを動かそうとする と、ファイルが複数ある場合、命令文が複数になる仕様なのですが、一つ目の印刷が終わらないうちに次の命令を実行してしまします。

一応、ACROBATのファイル名の引数を空白行で繋げれば正しく動作するようなのですが、『DIR /B』で取り出した文字列を横並びにする方法はないのでしょうか?

ほかにも、いい方法があったら、おねがいします~。

dir /b 希望する文字列
a.pdf
b.pdf ⇒ a.pdf b.pdf c.pdf
c.pdf


744) Re:文字列操作について vampire 2002/10/03(木) 18:14


>ほかにも、いい方法があったら、おねがいします~。

>dir /b 希望する文字列
>a.pdf
>b.pdf ⇒ a.pdf b.pdf c.pdf
>c.pdf

ファイル名称を横に際限なく(?)連ねる方法としてAWKを使った次のような方法が可能です。

DIR /B | JGAWK "{names=$1\" \"names}END{print names}"

これで、ファイル名称が横に連なります。各名称の間には半角のスペースが入ります。
AWKはJGAWKを使用します。
JGAWKは以下にあります。
http://www.vector.co.jp/soft/dos/util/se000208.html


このほかの方法としては、UnixライクなLSコマンド(フリーソフト)の利用が考えられますが、横に連ねる数が制限されてしまいます。
制限されてもよいのならLSコマンドの方がお手軽かも知れません。
使い方は
 LS C:\MASM\BINR
とすると、C:\MASM\BINRディレクトリーにあるファイル名称が横に並びます。並びきれない場合は次の行に移ります。

LSは森公一郎氏のフリーソフトなどいくつかあるようです。KMLS.LZHは、以下にあります。
http://www.vector.co.jp/soft/dl/dos/util/se002344.html


this article refers Vector Soft Library..

751) Re:文字列操作について ttt 2002/10/04(金) 16:18


おむすけさんはじめまして。
>dir /b 希望する文字列
>a.pdf
>b.pdf ⇒ a.pdf b.pdf c.pdf
>c.pdf

といったことであれば
@echo off
for /F "usebackq" %%i in (`dir /b`) do call :tmp %%i
echo %aaa%
pause
:tmp
set aaa=%1 %aaa%
goto :EOF
といった感じでどうでしょう?

770) Re2:文字列操作について おむすけ 2002/10/08(火) 12:02


お二方ありがとうございました。
無事作成完了しいました。
いや~いろんな方法があるもんですね。

805) Re2:文字列操作について ttt 2002/10/17(木) 10:18


自己レスになります
>@echo off
>for /F "usebackq" %%i in (`dir /b`) do call :tmp %%i
>echo %aaa%
>pause
>:tmp
>set aaa=%1 %aaa%
>goto :EOF
上記の方法だと"%"が含まれるファイルがあると
不具合があることがわかりましたので
下記の方法で記述してください。
@echo off
for /F "usebackq" %%i in (`dir /b`) do (
set dmy=%%i
call :tmp
)
echo %aaa%
pause
:tmp
set aaa=%dmy% %aaa%
goto :EOF
追記になりますがwin2000で作りました

 
 


カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ
カテゴリー「FOR .. IN ( ) DO..」索引へ
カテゴリー「FOR /F」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2002年10月03日 11:10に投稿されたエントリーのページです。

ひとつ前の投稿は「システムファイルも含めたディスク丸ごとコピーはXCOPYで可能?」です。

次の投稿は「AltキーやEnterキーの自動入力は可能?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート