|
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で作りました |
|