トップページ⇒tech
981コメント308KB

バッチファイルプログラミング質問スレ

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
Windows版シェルプログラミングみたいなものですな。
0002デフォルトの名無しさんNGNG
最近みかけないですね。
昔は良く捕まえて虫かごにいれておいたんですが。
0003デフォルトの名無しさんNGNG
冬休みの宿題は終わりましたか?
0004デフォルトの名無しさんNGNG
あぁ、冬休み始まった。始まりましたか?
0005デフォルトの名無しさんNGNG
はじめまして〜〜。
0006デフォルトの名無しさんNGNG
過去スレ
バッチファイルについて語ったり質問したりするスレ
http://pc.2ch.net/tech/kako/1006/10061/1006167121.html

関連スレ
バッチ_スレ
http://pc.2ch.net/tech/kako/1018/10181/1018163331.html
0007デフォルトの名無しさんNGNG
良スレ期待あげ
0008デフォルトの名無しさんNGNG
うざいから結論だけ書いて沈めよう。

使用できる命令:
DOS内部コマンドとほぼすべての外部コマンド。

使用できる制御構造:
IF FOR GOTO

主にバッチファイル専用コマンド:
BATKEY PAUSE CHOICE

変数:
使えるがその用途は限りなく少ない。環境変数は使える。

レベル:
BASIC以下。プログラミングと呼ぶのも憚られる。

楽しみ方:
他のプログラミング言語と違い大量の制限があるためその制限を超えた何かを作ること。
0009デフォルトの名無しさんNGNG
なにがうざいんだか・・・。
0010デフォルトの名無しさんNGNG
>>9
存在。
0011デフォルトの名無しさんNGNG
>>8
pl2batのようなことやると
バッチファイル内にperlのスクリプトかけるから
なんでもできそうやな

近視眼だとそれだけで終わっちゃうけど
0012デフォルトの名無しさんNGNG
>>11
じゃあはじめからperl使えよと。と言う話になったり。
001311NGNG
自分が使うならそれでいいんだけど、
他人に使わせる時にいちいちperl -f xxx para para とか書かせるのが。
知識ある人ばっかりじゃないんだから,隠蔽してあげられるところは
隠蔽したほうがね…
0014デフォルトの名無しさんNGNG
               ↓   
★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★・裏情報取引サイト→http://www.kawachi.zaq.ne.jp/dpdan803/★
★・国際免許取得→→→http://www.kawachi.zaq.ne.jp/dpdan803/★
★・あらゆる調査→→→http://www.kawachi.zaq.ne.jp/dpdan803/★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★
001511NGNG
追記
それならbatではなく実行ファイルにしておけたらいいけど、
できるならばソースはいつでも手が入れられたり覗けるようにするほうが
自分が居なくなったりしても混乱が減らせるでそ。

(退職などで)ツール作って残してくれてる人もいるが、
環境が変わった際に変更できないといちいち車輪を発明しなおさないと
いけないのが面倒で…
(あと,ジョブセキュリティにするような輩とかもいるし・・・)

この形で運用できるのは結構便利だったりする。
0016デフォルトの名無しさんNGNG
>>13
SOSで.com化とか。
ついでにつっこんどくと、perlに-fオプションはない。
0017デフォルトの名無しさんNGNG
>>2
それはバッチ
0018デフォルトの名無しさんNGNG
>>13
そう言うときのバッチファイルか!

@echo off

perl -f xxx %1 %2
0019135NGNG
>>16
ごめん。sedとごっちゃになってた…
0020デフォルトの名無しさんNGNG
bat2com⇒com2exe
↓
com2txt
0021デフォルトの名無しさんNGNG
>>8
callが抜けている。
0022デフォルトの名無しさんNGNG
>>21
わすれてたyo・・・頭の中にはあったんだがなぁ・・・。
0023デフォルトの名無しさんNGNG
@rem={
perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto EXIT
}

#perl script

exit;

:EXIT
0024デフォルトの名無しさんNGNG
>>23
ああ、すぐわかるPerlか何かに載ってたなぁ・・・。
0025デフォルトの名無しさんNGNG
いつの間に複数行コメントが使えるようになったんだ。
002625NGNG
違った。cygwinのviで作ったんでLFになってた。
でもこれでバッチには無視される行ってできないかな。

@rem = undef;
# perl script
exit;

^M
perl %0 %1 %2 %3 %4 %5 %6 %7 %8 %9


0027デフォルトの名無しさんNGNG
>>26
間違ってるというかなんじゃそら。
0028デフォルトの名無しさんNGNG
>>27
具体的にどのへんが間違ってる?
0029デフォルトの名無しさんNGNG
j
0030デフォルトの名無しさんNGNG
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0031デフォルトの名無しさんNGNG
ID:ZBsKvw39 (゚∀゚)アヒャヒャ
ID:ZBsKvw39 (゚∀゚)アヒャヒャ
ID:ZBsKvw39 (゚∀゚)アヒャヒャ
0032デフォルトの名無しさんNGNG
はじめまして〜〜。
0033デフォルトの名無しさんNGNG
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0034デフォルトの名無しさんNGNG
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。          
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
   
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
  
ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
0035デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0036デフォルトの名無しさんNGNG
>>593
同意。いろんな状況があるけど、結局たどり着くところはそこだと思う。
0037デフォルトの名無しさんNGNG
fDUMwxQm、がっかりさせんなよ!
時間の約束が守れない奴はどんなに偉かろうが人間的にもうだめぽ
0038デフォルトの名無しさんNGNG
 結構厳しいんです。

正直、コレから5年で5兆日本円(機軸)
稼ぐ事は普通に結構出来ますが

「目先の」 小さな事が僕にとって大事です。
お願いします。
助けを頂きたいのです。かなりヤバイです
一刻の猶予が完全に無いんです

大丈夫でしょうか、
けんすう様(泣
0039デフォルトの名無しさんNGNG
>>539
マジに見える貴方がバッカみたい。
しかし、もう寝るので許すよ。
0040デフォルトの名無しさんNGNG
何を一人でぶつぶつ
0041デフォルトの名無しさんNGNG
Windowsとソフトウェアでまた荒らしが始まった予感。
0042デフォルトの名無しさんNGNG
2ちゃんねるがアクセスログ記録を始めましたが、あなたの考えは?
http://dailynews.yahoo.co.jp/fc/computer/2channel/ の左下
0043デフォルトの名無しさんNGNG

趣旨は理解しているのだが
空気も趣旨も読めない筋肉あらいぐまに乱入されたら
罵倒合戦になっても致し方あるまい
0044デフォルトの名無しさんNGNG
266 名前:番組の途中ですが名無しです[] 投稿日:03/01/08 19:09 ID:2HVC1UGm
この板は中と半端な馬鹿が集まってきているから好き


267 名前:番組の途中ですが名無しです[] 投稿日:03/01/08 19:10 ID:qfaGu+ZB
じゃあさトップに閲覧料1分1億円てかいといて訴えられるたびに請求したら良くない?
0045デフォルトの名無しさんNGNG
IPが理解不能な厨には効果ない罠。
0046デフォルトの名無しさんNGNG
全ての板ってことっすか?
0047デフォルトの名無しさんNGNG
今回の件で言論の自由さえも脅かされることになるかも
誰も何も言えない時代が来そうな伊予柑
0048デフォルトの名無しさんNGNG
匿名掲示板の意味を履き違えてる人が多くて萎える。
0049デフォルトの名無しさんNGNG
実際は、トマトしないと変化は少ないだろうね。

ヲチ板を見ればわかるが、基本的に警察・裁判所以外には情
報を出さないということは、相手が事件化させ名前が知れ渡る
可能性があっても敢えて訴えるというほどの決意を持たない限
り大丈夫ってことだから。

だから、当面基本的には変わらないだろ。

尤も、今後そういう訴える奴も増えていくだろうし、
中には刑事事件化するものもでるだろう。

あとはさらなるリスクを冒してまでひろゆきが、
そこまで放置していられるかどうかだろうね。
0050デフォルトの名無しさんNGNG


















             バカに乗っ取られたマターリスレ晒しage中。
0051デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0052デフォルトの名無しさんNGNG
10
0053デフォルトの名無しさんNGNG
さかだちしながら10げっと
0054デフォルトの名無しさんNGNG
実況板で聞いたんだが、強制ID板では昔から抜かれてたらしいが>IP
0055デフォルトの名無しさんNGNG
快速がレスつけてんの半年ぶりぐらいに見た
0056デフォルトの名無しさんNGNG
 IP記録告知以後、2chのどの板も、どのスレも、だいぶ静かになった
ような気がする。

 今まで如何に無責任な書き込みが多かったかを示しているような
気もするけど、閑散として活気もなくなったような気もする。
0057デフォルトの名無しさんNGNG
おぉーついに…
でも全員が閲覧できるわけじゃないから
ヤバイこと書き込まなきゃOKなんでしょ?
0058デフォルトの名無しさんNGNG
2002年2ちゃんねるアニメランキング1位のアニメに・・・・

モナーが出演決定!!!!!!!!!!!!!!!!!!!!!

<<放送時間>>
1/12
大阪 テレビ大阪 (日)9:30〜10:00
東京 テレビ東京 (日)9:30〜10:00
名古屋 テレビ愛知 (日)9:30〜10:00
福岡 TVQ九州放送 (日)9:30〜10:00
札幌 テレビ北海道 (日)9:30〜10:00
岡山・高松 テレビせとうち (日)9:30〜10:00 
0059デフォルトの名無しさんNGNG
荒らしを何とかして〜!!!!
また孫悟空だろう。
0060デフォルトの名無しさんNGNG
朝から大変
何て事してくれんのよ
キラーって奴は・・・
戦って守りきりますよ
母は強し
0061デフォルトの名無しさんNGNG
掲示板の書き込みを24時間365日チェックしなさいと言う事だから、規模的
に管理人一人じゃどうしようもない。。が、当然2chだけじゃなく他の掲示板に
も大きな問題となる判決だ、、
0062デフォルトの名無しさんNGNG
ちくり裏事情なんかは、WINNY掲示板みたいなWINNY型P2Pにして、
2ちゃんからリンクして拾ってくるようにできんかな?
0063デフォルトの名無しさんNGNG
zD2HIsxl
厨房逝ってよし。
0064デフォルトの名無しさんNGNG
なんか各所で「ブラウザを立ち上げ直してください」とかいうエラーでて書き込めないって
人がいるけど、それって何をするとでるの?
俺は見たこと無い。
0065山崎渉NGNG
(^^)
0066山崎渉NGNG
(^^)
0067デフォルトの名無しさんNGNG
板違いでスマンが、
VBSのスレを知りませんか?
0068山崎渉NGNG
(^^)
0069デフォルトの名無しさんNGNG
以後sage進行でおながいします
0070デフォルトの名無しさんNGNG
内部コマンド (Win95)
CD
COPY
CLS
CTTY
DATE
DEL / ERASE
DIR
ECHO
EXIT
FOR
IF
MD / MKDIR
PATH
PAUSE
PROMPT
RD /RMDIR
REN /RENAME
SET
SHIFT
TIME
TYPE
VER
VOL
0071デフォルトの名無しさんNGNG
外部コマンド
ATTRIB
CHOICE
FORMAT
MOVE
COMMAND
糞多いので省略
0072デフォルトの名無しさんNGNG
Cとバッチファイルの大きな違い

コンパイル不要
特別なソフト不要
数値が扱えない
低速
0073デフォルトの名無しさんNGNG
バッチコマンドを使えると得する事

拡張子などのリネーム作業を大幅に短縮できる
ネットワークとかシステムの細かな設定が可能

いわゆるCUIでの操作なのでコマンドを覚えるのが大変(らしい)
0074デフォルトの名無しさんNGNG
あ、REM忘れてた(w >>70
0075デフォルトの名無しさんNGNG
@echo off
rem /* レジストリ保存 win9x */
rem /* intpathでパス指定、ここでは"?:\" */
set intpath=\

if "%1" == "" goto err
cd %intpath%
md %1
cd %1
for %%i in (user;system) do \windows\command\attrib -r -s -h \windows\%%i.dat > nul
for %%i in (user;system) do copy \windows\%%i.dat
goto exit

:err
echo %%1を指定せよ

:exit
set intpath=
exit

これをファイル名を指定して実行のダイアログにドラッグして[space]+フォルダ名でウマー
例 C:\hoge.bat 123456
0076デフォルトの名無しさんNGNG
>>75
> for %%i in (user;system) do \windows\command\attrib -r -s -h \windows\%%i.dat > nul
> for %%i in (user;system) do copy \windows\%%i.dat
セミコロン区切りってできるんだっけ。
0077デフォルトの名無しさんNGNG
>>76
できる。スペースとかカンマでもできるけど、
自分でそれがいいと思うのを使えばいい

@echo off
echo space
for %%i in (1 2 3) do echo %%i
pause >nul
echo ;
for %%i in (1;2;3) do echo %%i
pause >nul
echo ,
for %%i in (1,2,3) do echo %%i
pause >nul
exit
0078デフォルトの名無しさんNGNG
VERIFYも忘れてたな>70
0079デフォルトの名無しさんNGNG
CALL
0080デフォルトの名無しさんNGNG
GOTO
0081デフォルトの名無しさんNGNG
バッチファイルの引数が=で分割されるってのは昔からだっけ?
0082デフォルトの名無しさんNGNG
から
0083デフォルトの名無しさんNGNG
■ 棚からボタ餅MS-DOS
http://pcweb.mycom.co.jp/column/msdos.html
0084デフォルトの名無しさんNGNG
MS-DOSはOSなのか?
http://pc.2ch.net/test/read.cgi/prog/1043591614/
MS-DOS ってどうよ
http://pc.2ch.net/test/read.cgi/os/1010640399/
0085デフォルトの名無しさんNGNG
>>82は>>81への回答?
いつごろからか知ってる?
0086デフォルトの名無しさんNGNG
>>85
3.3で動作確認
0087デフォルトの名無しさんNGNG
@echo off
rem /* レジストリ保存&復元ユーテリティ win9x */
set intpath=\

if "%1" == "/?" goto usage
if "%1" == "" goto usage
if not exist \windows\command\attrib.exe goto err
echo レジストリ保存&復元ユーテリティ win9x
echo レジストリを保存作業を開始します.
echo 開始ディレクトリは ?:%intpath% です.
echo/
for %%i in (user;system) do \windows\command\attrib -r -h -s \windows\%%i.dat
echo ?:%intpath%ディレクトリを作成しています...
md %intpath%%1
if exist %intpath%%1\*.* del %intpath%%1\*.??? >nul
echo/
for %%i in (user;system) do copy \windows\%%i.dat %intpath%%1 > nul
echo %intpath%%1へレジストリを保存しました
echo 復元ユーテリティをコピーしています...
cd %intpath%%1
set p=%%

echo @echo off>regback.bat
echo rem /* レジストリ保存&復元ユーテリティ win9x */>>regback.bat
echo/>>regback.bat
echo if not exist \windows\command\attrib.exe goto err>>regback.bat
echo echo レジストリ復元ツール>>regback.bat
echo echo レジストリを復元します.>>regback.bat
echo echo/>>regback.bat
echo echo 以前のバックアップファイルを.\backup\に保存します.>>regback.bat
0088デフォルトの名無しさんNGNG
echo for %p%%p%i in (user;system) do \windows\command\attrib -r -h -s \windows\%p%%p%i.dat>>regback.bat
echo md backup>>regback.bat
echo if exist backup\*.* del backup\*.??? > nul>>regback.bat
echo for %p%%p%i in (user;system) do copy \windows\%p%%p%i.dat .\backup > nul>>regback.bat
echo echo 以前のバックアップファイルを.\backup\に保存しました.>>regback.bat
echo echo/>>regback.bat
echo echo レジストリを復元しています...>>regback.bat
echo echo 復元中は絶対にウィンドウを閉じないでください.>>regback.bat
echo for %p%%p%i in (user;system) do del \windows\%p%%p%i.dat>>regback.bat
echo copy *.dat \windows>>regback.bat
echo echo レジストリを復元に成功しました.>>regback.bat
echo echo レジストリを反映させるには再起動をしてください.>>regback.bat
echo goto exit>>regback.bat
echo/>>regback.bat
echo :err>>regback.bat
echo echo エラー: \windows\command\attrib.exeが見つかりません>>regback.bat
echo/>>regback.bat
echo :exit>>regback.bat
echo exit>>regback.bat

echo レジストリ保存作業完了しました。
goto exit

:err
echo エラー: \windows\command\attrib.exeが見つかりません
echo/
goto exit

:usage
echo レジストリ保存&復元ユーテリティ win9x
0089デフォルトの名無しさんNGNG
echo レジストリを保存&復元します
echo/
echo ???.bat [フォルダ名]
echo/
echo [フォルダ名] 保存したいフォルダの名前を指定します.

:exit
set p=
exit



レジストリを復元したりするツールですが
0090デフォルトの名無しさんNGNG
>>86
そうか、ずっとそうだったのか。知らんかったよ。
逝って来る前にもう一つだけ、これって常識?
0091デフォルトの名無しさんNGNG
エミュレータとか使ってないのか?
0092デフォルトの名無しさんNGNG
DOSなんて持ってないよ。
0093デフォルトの名無しさんNGNG
>>8の内容

>主にバッチファイル専用コマンド:
>BATKEY PAUSE CHOICE

あほ
0094デフォルトの名無しさんNGNG
>92に質問だが、
持ってるOSは何
プログラミング(?暦はどのくらい
エスケープシーケンスは使った事があるか
0095デフォルトの名無しさんNGNG
>>94
> 持ってるOSは何
メインはLinux

> プログラミング(?暦はどのくらい
20年くらい

> エスケープシーケンスは使った事があるか
ある。今でもbashのプロンプトに使ったりするし。

>>92は「DOSなんて(もう)持ってない」ってこと。すまん。
0096デフォルトの名無しさんNGNG
Linuxだったか。最近Phat使ってなかったから、てっきりWinの事だと思ってたYo!スマン
0097デフォルトの名無しさんNGNG
:
ALIAS
BIND
BUILTIN
CD
COMPGEN
CONTINUE
DIRS
ECHO
EVAL
EXIT
FALSE
FG
FUNCTION
HASH
HISTORY
JOBS
LET
LOGOUT
PRINTF
PWD
READONLY
SELECT
SHIFT
SOURCE
TEST
TRUE
TYPESET
UMASK
UNSET
VARIABLES
WHILE
0098デフォルトの名無しさんNGNG
>>97
何のbuiltinか知らんが、FGはあってもBGはないのか?
0099デフォルトの名無しさんNGNG
>>98
helpコマンドからそのまま引っ張ったから。
0100デフォルトの名無しさんNGNG
>>99
CygWinの方(一部)
fg [job_spec] for NAME [in WORDS ... ;] do COMMA
for (( exp1; exp2; exp3 )); do COM function NAME { COMMANDS ; } or NA
getopts optstring name [arg] hash [-lr] [-p pathname] [-dt] [na
help [-s] [pattern ...] history [-c] [-d offset] [n] or hi
if COMMANDS; then COMMANDS; [ elif jobs [-lnprs] [jobspec ...] or job
kill [-s sigspec | -n signum | -si let arg [arg ...]
local name[=value] ... logout
popd [+N | -N] [-n] printf format [arguments]
pushd [dir | +N | -N] [-n] pwd [-PL]
read [-ers] [-u fd] [-t timeout] [ readonly [-anf] [name[=value] ...]
return [n] select NAME [in WORDS ... ;] do CO
set [--abefhkmnptuvxBCHP] [-o opti shift [n]
shopt [-pqsu] [-o long-option] opt source filename
suspend [-f] test [expr]
time [-p] PIPELINE times
trap [arg] [signal_spec ...] or tr true
type [-afptP] name [name ...] typeset [-afFirtx] [-p] name[=valu
ulimit [-SHacdflmnpstuv] [limit] umask [-p] [-S] [mode]
unalias [-a] [name ...] unset [-f] [-v] [name ...]
until COMMANDS; do COMMANDS; done variables - Some variable names an
wait [n] while COMMANDS; do COMMANDS; done
{ COMMANDS ; }
0101デフォルトの名無しさんNGNG
ここには他に二人いるのか?
0102デフォルトの名無しさんNGNG
誰の他に?
0103デフォルトの名無しさんNGNG
自分と>103の他
0104デフォルトの名無しさんNGNG
>102の間違い
0105デフォルトの名無しさんNGNG
92==95==98==102なわけだが。
0106デフォルトの名無しさんNGNG
はにゃ〜ん

3人いるらしぃ
0107デフォルトの名無しさんNGNG
97==99==101==103-104だから。
0108デフォルトの名無しさんNGNG
100=106
0109デフォルトの名無しさんNGNG
94==96もいれると4人か?
0110デフォルトの名無しさんNGNG
94==96==97==99==101==103-10
0111デフォルトの名無しさんNGNG
ほんとに3人だけかよ
0112デフォルトの名無しさんNGNG
恐らく
0113デフォルトの名無しさんNGNG
正直、バッチファイルでゲームとか作ってみたいと思ったことがある
0114デフォルトの名無しさんNGNG
>>113
神!!

BATKEYとかあればジャンケンゲームとかくらいなら作れそうな気がするが、こ
れだけやる気をそそられない課題も珍しい。
0115デフォルトの名無しさんNGNG
その後、本気で作ろうとしたんだ。
でも行が数千行にもなって、途中でヤメタ。
もうすぐで完成しそうだけど、それを作り続ける気力が無い…
0116デフォルトの名無しさんNGNG
一体何のゲームを作ろうとしたわけ?
0117デフォルトの名無しさんNGNG
RPGとかアクションは絶対無理だから、クイズかパズルにしようかと思ったが、
なぜか迷路を作ろうとおもたよ
0118デフォルトの名無しさんNGNG
たしかに三択クイズとかならできそうだが、バッチで迷路ってどうやって表示
すんのよ。
0119デフォルトの名無しさんNGNG
迷路の画面というのか?それは外部ファイルを別途用意して
type [ファイル名]。
typeコマンドはエスケープシーケンスも読みこんでくれる
0120デフォルトの名無しさんNGNG
>>119
タイプだぁ〜?
echo を使え
0121デフォルトの名無しさんNGNG
最初は全てひとつのファイルでecho沢山使ってたけど、
ファイル自体が大きくなる。そうなると、gotoとか多く使うでしょ。
gotoって、意外と時間かかるから、プレイする時間より待つ時間の方が長くなる。
だからなるべく早く処理するためには、システムファイル(exeとdllに値する部分)と見る部分のファイル
(ビットマップに値する部分のファイル)を分離せざるを得ないと思われ。
0122デフォルトの名無しさんNGNG
表示する部分を別のbatにしてcallすればgotoの処理速度低下を抑えられるかな?
0123デフォルトの名無しさんNGNG
gotoは前方への分岐の方が速いってのがあったな。
プロセスの生成+分割されたファイルの読み込みと、
でかい単一ファイルの読み込みのどっちが重いかってことになるのかな。
0124デフォルトの名無しさんNGNG
読みだし速度が遅いフロッピーで動かすといかにgotoの読みだしが遅いかよくわかるよ。
だいたい4-50KB、1500行ぐらいになると厳しいね。
だから、分割はそのくらいで分割してる。
callは設定ファイルを読み込む時に使ってる。
0125デフォルトの名無しさんNGNG
>>124
> だいたい4-50KB、1500行ぐらいになると厳しいね。
それだけ書くってとこで凄すぎ。というか呆れた。
0126デフォルトの名無しさんNGNG
Cとかでも1000行を超えることは結構あることを考えると
そのぐらい、どうってことないと思うが
0127デフォルトの名無しさんNGNG
BATKEYじゃなくてCHOICEを使ってる
0128デフォルトの名無しさんNGNG
いや、現在形で聞かれてもなー
0129デフォルトの名無しさんNGNG
j
0130set /?よりNGNG
SET コマンドには、2 つの新しいスイッチが追加されています:

SET /A 式
SET /P 変数=[プロンプト文字列]

/A スイッチは、等号の右側の文字列が、評価すべき数式であることを
指定します。式の評価はごく単純で、次の操作がサポートされます。
操作は、優先順位の高い順に示されています:

() - グループ化
* / % - 算術演算子
+ - - 算術演算子
<< >> - 論理シフト
& - ビット演算子 AND
^ - ビット演算子排他的 OR
| - ビット演算子 OR
= *= /= %= += -= - 代入
&= ^= |= <<= >>=
, - 式の区切り記号
0131set /?よりNGNG
環境変数の置換は、次のように拡張されます:

%PATH:文字列1=文字列2%

は、PATH 環境変数を展開し、その結果に含まれるすべての "文字列1" を
"文字列2" に置き換えます。"文字列2" に空の文字列を指定すると、展開
された出力からすべての "文字列1" を削除することができます。"文字列1"
をアスタリスクで始め、展開された出力の先頭から、文字列1 の残りの部分
が最初に現れるまでのすべてを一致させることもできます。
0132set /?よりNGNG
また、展開の副文字列を指定することもできます。

%PATH:~10,5%

は、PATH 環境変数を展開し、展開結果の 11 番目 (オフセット 10) の文字
から始まる 5 文字だけを使います。長さが指定されなかった場合は、変数の
値の残りの長さを既定値とします。オフセットまたは長さのどちらかが負の値
の場合、環境変数の値の長さに指定されたオフセットまたは長さを足してその
数を使います。

%PATH:~-10%

は、パス変数の最後の10 文字が展開されます。

%PATH:~0,-2%

は最後の 2 文字以外のすべてが展開されます。
0133set /?よりNGNG
最後に、遅延環境変数の展開が追加されました。このサポートは常に既定で
無効になっていますが、CMD.EXE の /V: のコマンド ライン スイッチを使
って有効または無効にできます。CMD /? を参照してください。

遅延環境変数の展開は、実行時ではなく、テキスト行を読み取るときに展開
されるという現在の制限を避けるために役立ちます。
次の例は即時変数展開の問題を説明しています。

set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)

この例は、論理的には IF 文が別の IF 文の本体に含まれる複合文なので、
両方の IF 文の %VAR% が、最初の IF 文を読み取ったときに展開されます。
このため、メッセージは決して表示されません。複合分の中の IF では "before"
と "after" が比較され、決して等しくはなりません。同様に次の例も期待し
たようには動作しません。
0134set /?よりNGNG
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

この例では、現在のディレクトリのファイルの一覧は作成されず、代わりに最後
に見つけられたファイルが LIST 変数に設定されます。これは %LIST% が FOR 文
が読み取られるとき、一度だけ展開され、そのときは LIST 変数は、空だからです。
つまり、実際に実行されている FOR ループは

for %i in (*) do set LIST= %i

で、LIST に最後にみつけられたファイルを設定し続けているだけです。
0135set /?よりNGNG
遅延環境変数の展開では、実行時に環境変数を展開するために異なった文字
(感嘆符)を使うことができます。遅延環境変数の展開が有効な場合、上記の
例は次のように書くと意図したように動作します。

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
0136set /?よりNGNG
コマンド拡張機能が有効な場合、SET によって表示される変数の一覧には
現れないいくつかの動的な環境変数があります。これらの変数の値は、変数の
値が展開されるときに動的に計算されます。ユーザーがこれらの名前の変数を
明示的に定義する場合、その定義は下記の動的な定義を無効にします。

%CD% - 現在のディレクトリ文字列に展開します。

%DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。

%TIME% - TIME コマンドと同じフォーマットで現在の時刻に展開します。

%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します

%ERRORLEVEL% - 現在の ERRORLEVEL の値に展開します。

%CMDEXTVERSION% - 現在のコマンド プロセッサ拡張機能のバージョン番号に
展開します。

%CMDCMDLINE% - コマンド プロセッサを起動したオリジナル コマンドライン
に展開します。
0137for /?よりNGNG
FOR /D %変数 IN (セット) DO コマンド [コマンドパラメータ]

セットがワイルドカードを含む場合は、ファイル名ではなくディレクトリ名
の一致を指定します。

FOR /R [[ドライブ:]パス] %変数 IN (セット) DO コマンド [コマンドパラメータ]

[ドライブ:]パスから始めて、ツリーの各ディレクトリで FOR 文を実行し
ます。/R の後にディレクトリが指定されていない場合は、現在の
ディレクトリが使用されます。セットが単一のピリオド (.) である場合は、
ディレクトリ ツリーの列挙だけを行います。
0138for /?よりNGNG
ファイル名セットは、1 つ以上のファイル名です。各ファイルが開かれ、読み
取られ、処理されてから、ファイル名セットの次のファイルに進みます。処理
には、ファイルの読み取り、個々のテキスト行への分割と、0 個以上のトークン
への解析が含まれます。その後、変数値を見つかったトークン文字列に設定して、
for ループの本体が呼び出されます。既定では、/F は、各ファイルの各行から、
空白で区切られた最初のトークンを渡します。空白行はスキップされます。既定
の解析動作を変更するには、オプションの "オプション" パラメータを指定しま
す。これは、異なる解析オプションを指定する 1 つ以上のキーワードを含む、
引用符で囲まれた文字列です。キーワードは、次のとおりです:

eol=c - 行末のコメント文字を指定します (1 文字)。
skip=n - ファイルの先頭でスキップする行数を指定します。
delims=xxx - 区切り文字のセットを指定します。これは、既定の
区切り文字であるスペースとタブを置き換えます。
tokens=x,y,m-n - 各繰り返しに対して、各行から for 本体に渡すトー
クンを指定します。これにより、追加の変数名が割り当
てられます。m-n の形式は範囲で、m 番目から n 番目の
トークンを指定します。tokens= 文字列の最後の文字が
アスタリスクである場合は、追加の変数が割り当てられ、
最後のトークンが解析された後、行に含まれている残り
のテキストを受け取ります。
usebackq - 次の新しい表示形式を指定します。逆引用符で囲まれた
文字列がコマンドとして実行され、一重引用符で囲まれた
文字列がリテラル文字列コマンドになりファイル名セット
のファイル名を二重引用符で囲めるようになります。
0139for /?より NGNG
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k


この例は、myfile.txt の各行を解析します。セミコロンで始まる行を無視し、
各行の 2 番目と 3 番目のトークンを for 本体に渡します。トークンは、カンマ
またはスペースで区切られています。for 本体の文が %i で 2 番目のトークン
を、%j で 3 番目のトークンを取得し、%k で 3 番目移行のすべてのトークンを
取得していることに注意してください。スペースを含むファイル名に対しては、
二重引用符でファイル名を引用する必要があります。この方法で二重引用符を使う
ためには、usebackq オプションを使わなければなりません。使わなければ、二重
引用符はリテラル文字列の定義として解釈され、解析されます。

%i は for 文で明示的に宣言され、%j と %k は tokens= オプションで
暗黙的に宣言されています。tokens= 行を使って 26 個までのトークンを
指定できますが、文字 'z' または 'Z' よりも高い変数を宣言することは
できません。FOR 変数名は大文字と小文字を区別し、グローバルなもので
あり、一度にアクティブにできるのは合計 52 個までです。

また、カッコで囲んだファイル名セットを一重引用符で囲み、文字列にすることに
より、即時の文字列に対する FOR /F 解析ロジックを使うこともできます。
これは、ファイルからの単一入力行として処理されます。

最後に、FOR /F コマンドを使って、コマンド出力を解析することができます。
カッコの中のファイル名セットを逆引用符で囲みます。この文字列は、コマンド
ラインとして子 CMD.EXE に渡されます。出力はメモリにキャプチャされ、ファイ
ルのように解析されます。
例:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

この例は、現在の環境の環境変数名を列挙します。
0140for /?よりNGNG
また、FOR 変数参照の置換も拡張されました。
次のオプション構文を使うことができます:

%~I - すべての引用句 (") を削除して、I を展開します。
%~fI - %I を完全修飾パス名に展開します。
%~dI - %I をドライブ文字だけに展開します。
%~pI - %I をパス名だけに展開します。
%~nI - %I をファイル名だけに展開します。
%~xI - %I をファイル拡張子だけに展開します。
%~sI - 展開されたパスは短い名前だけを含みます。
%~aI - %I をファイルの属性に展開します。
%~tI - %I ファイルの日付/時刻に展開します。
%~zI - %I ファイルのサイズに展開します。
%~$PATH:I - PATH 環境変数に指定されているディレクトリを
検索し、最初に見つかった完全修飾名に %I を
展開します。
環境変数名が定義されていない場合、または検索
してもファイルが見つからなかった場合は、この
修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:

%~dpI - %I をドライブ文字とパスだけに展開します。
%~nxI - %I をファイル名と拡張子だけに展開します。
%~fsI - %I を完全なパスと短い名前だけに展開します。
%~dp$PATH:i - PATH 環境変数に指定されているディレクトリを
検索して %I を探し、最初に見つかったファイル
のドライブ文字とパスだけに展開します。
%~ftzaI - %I を DIR コマンドの出力行のように展開します。
0141デフォルトの名無しさんNGNG
>>130-140
バッチファイルプログラミング Win2K(NT?)以上ならかなりいけます。
0142デフォルトの名無しさんNGNG
珍しく人がいる
0143デフォルトの名無しさんNGNG
@echo off
echo 三角形の面積
set /p a=底辺入力?
set /p b=高さ入力?
set /a c=a*b/2
echo %c%
0144デフォルトの名無しさんNGNG
※cmd /V:ONでコマンドプロンプトを起動すること

@echo off
echo 先頭文字だけ小文字→大文字変換
set /p str=アルファベット入力?
set ch=%str:~0,1%
set lower=abcdefghijklmnopqrstuvwxyz
set upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
for /L %%i in (0,1,25) do call :uppercase_loop %%i

echo %ch%%str:~1%
goto :eof

:uppercase_loop
set l=!lower:~%1,1!
set u=!upper:~%1,1!
set ch=!ch:%l%=%u%!
0145デフォルトの名無しさんNGNG
CSV→HTML変換
@echo off
echo ^<table^>
FOR /F "eol=; tokens=1,2,3 delims=, " %%i in (test.csv) do echo ^<tr^> ^<td^>%%i^</td^> ^<td^>%%j^</td^> ^<td^>%%k^</td^> ^</tr^>
echo ^</table^>

test.csvの中身
商品,値段,個数
りんご,80,10
みかん,90,20
ばなな,100,30
0146デフォルトの名無しさんNGNG
バッチファイル最強説
0147デフォルトの名無しさんNGNG
WSH対抗上げ
0148デフォルトの名無しさんNGNG
対抗というより共存だろうな
0149ジャンケンゲームNGNG
※cmd /V:ONでコマンドプロンプトを起動すること

@echo off&echo ジャンケンゲーム&set win=0&set lose=0&set player=&set cpu=&set msg=1
set name1=グー&set name2=チョキ&set name3=パー&set msg_name1=ジャンケン?&set msg_name2=あいこで?&set err_msg=入力エラー
set t11=draw&set t12=win&set t13=lose&set t21=lose&set t22=draw&set t23=win&set t31=win&set t32=lose&set t33=draw
:start
set player=&set /p player=!msg_name%msg%!(1:%name1% 2:%name2% 3:%name3% 9:終了) &set /a cpu=%random% / 10923 + 1
if /%player% EQU /9 (echo 結果&echo 勝ち:%win% 負け:%lose%&goto :EOF) else if /%player% LSS /1 (echo %err_msg%&goto :start) else if /%player% GTR /3 (echo %err_msg%&goto :start)
goto !t%player%%cpu%!
:win
echo 勝ち プレイヤー:!name%player%! CPU:!name%cpu%!&set /a win+=1&set msg=1&goto :start
:lose
echo 負け プレイヤー:!name%player%! CPU:!name%cpu%!&set /a lose+=1&set msg=1&goto :start
:draw
echo あいこ プレイヤー:!name%player%! CPU:!name%cpu%!&set msg=2&goto :start
0150デフォルトの名無しさんNGNG
あいこーーーーーーー(TT)                (謎)
0151デフォルトの名無しさんNGNG
>>150 もう明日になっても会えません。
0152デフォルトの名無しさんNGNG
せっかくジャンプテーブルもどきまで使ったのにレスつかないと寂しいな。
0153デフォルトの名無しさんNGNG
:1
@echo off
echo   人
echo  (  )
echo ヽ(・∀・)ノウンコー
goto 1
0154デフォルトの名無しさんNGNG
@echo off
:#
echo 
pause
goto #
0155calc.bat (1/6)NGNG
四則演算ライブラリ作りますた。
一桁 x 一桁までの演算ができまつ。
----------------------------------------------------
@echo off
find "_%3_%4_" calc.bat | find "_%3_%4_">calc2.bat
rem echo %%1=%1, %%2=%2, %%3=%3, %%4=%4, %%5=%5,
if "%1"=="ADD" echo set %2=%%2>calc3.bat
if "%1"=="SUB" echo set %2=%%3>>calc3.bat
if "%1"=="MUL" echo set %2=%%4>>calc3.bat
if "%1"=="DIV" echo set %2=%%5>>calc3.bat
if "%1"=="CMP" echo set %2=%%6>>calc3.bat
if "%1"=="CMP" echo if "%%6"=="" set %2=-1>>calc3.bat
call calc2.bat calc3
del calc2.bat
del calc3.bat
goto END
:---DATA---
%1 _0_0_ 0 0 0 255 0
%1 _0_1_ 1 -1 0 0
%1 _0_2_ 2 -2 0 0
%1 _0_3_ 3 -3 0 0
%1 _0_4_ 4 -4 0 0
%1 _0_5_ 5 -5 0 0
%1 _0_6_ 6 -6 0 0
%1 _0_7_ 7 -7 0 0
%1 _0_8_ 8 -8 0 0
%1 _0_9_ 9 -9 0 0
0156calc.bat (2/6)NGNG
%1 _1_0_ 1 1 0 255 1
%1 _1_1_ 2 0 1 1 0
%1 _1_2_ 3 -1 2 0
%1 _1_3_ 4 -2 3 0
%1 _1_4_ 5 -3 4 0
%1 _1_5_ 6 -4 5 0
%1 _1_6_ 7 -5 6 0
%1 _1_7_ 8 -6 7 0
%1 _1_8_ 9 -7 8 0
%1 _1_9_ 10 -8 9 0
%1 _2_0_ 2 2 0 255 1
%1 _2_1_ 3 1 2 2 1
%1 _2_2_ 4 0 4 1 0
%1 _2_3_ 5 -1 6 0
%1 _2_4_ 6 -2 8 0
%1 _2_5_ 7 -3 10 0
%1 _2_6_ 8 -4 12 0
%1 _2_7_ 9 -5 14 0
%1 _2_8_ 10 -6 16 0
%1 _2_9_ 11 -7 18 0
0157calc.bat (3/6)NGNG
%1 _3_0_ 3 3 0 255 1
%1 _3_1_ 4 2 3 3 1
%1 _3_2_ 5 1 6 1 1
%1 _3_3_ 6 0 9 1 0
%1 _3_4_ 7 -1 12 0
%1 _3_5_ 8 -2 15 0
%1 _3_6_ 9 -3 18 0
%1 _3_7_ 10 -4 21 0
%1 _3_8_ 11 -5 24 0
%1 _3_9_ 12 -6 27 0
%1 _4_0_ 4 4 0 255 1
%1 _4_1_ 5 3 4 4 1
%1 _4_2_ 6 2 8 2 1
%1 _4_3_ 7 1 12 1 1
%1 _4_4_ 8 0 16 1 0
%1 _4_5_ 9 -1 20 0
%1 _4_6_ 10 -2 24 0
%1 _4_7_ 11 -3 28 0
%1 _4_8_ 12 -4 32 0
%1 _4_9_ 13 -5 36 0
0158calc.bat (4/6)NGNG
%1 _5_0_ 5 5 0 255 1
%1 _5_1_ 6 4 5 5 1
%1 _5_2_ 7 3 10 2 1
%1 _5_3_ 8 2 15 1 1
%1 _5_4_ 9 1 20 1 1
%1 _5_5_ 10 0 25 1 0
%1 _5_6_ 11 -1 30 0
%1 _5_7_ 12 -2 35 0
%1 _5_8_ 13 -3 40 0
%1 _5_9_ 14 -4 45 0
%1 _6_0_ 6 6 0 255 1
%1 _6_1_ 7 5 6 6 1
%1 _6_2_ 8 4 12 3 1
%1 _6_3_ 9 3 18 2 1
%1 _6_4_ 10 2 24 1 1
%1 _6_5_ 11 1 30 1 1
%1 _6_6_ 12 0 36 1 0
%1 _6_7_ 13 -1 42 0
%1 _6_8_ 14 -2 48 0
%1 _6_9_ 15 -3 54 0
0159calc.bat (5/6)NGNG
%1 _7_0_ 7 7 0 255 1
%1 _7_1_ 8 6 7 7 1
%1 _7_2_ 9 5 14 3 1
%1 _7_3_ 10 4 21 2 1
%1 _7_4_ 11 3 28 1 1
%1 _7_5_ 12 2 35 1 1
%1 _7_6_ 13 1 42 1 1
%1 _7_7_ 14 0 49 1 0
%1 _7_8_ 15 -1 56 0
%1 _7_9_ 16 -2 63 0
%1 _8_0_ 8 8 0 255 1
%1 _8_1_ 9 7 8 8 1
%1 _8_2_ 10 6 16 4 1
%1 _8_3_ 11 5 24 2 1
%1 _8_4_ 12 4 32 2 1
%1 _8_5_ 13 3 40 1 1
%1 _8_6_ 14 2 48 1 1
%1 _8_7_ 15 1 56 1 1
%1 _8_8_ 16 0 64 1 0
%1 _8_9_ 17 -1 72 0
0160calc.bat (6/6)NGNG
%1 _9_0_ 9 9 0 255 1
%1 _9_1_ 10 8 9 9 1
%1 _9_2_ 11 7 18 4 1
%1 _9_3_ 12 6 27 3 1
%1 _9_4_ 13 5 36 2 1
%1 _9_5_ 14 4 45 1 1
%1 _9_6_ 15 3 54 1 1
%1 _9_7_ 16 2 63 1 1
%1 _9_8_ 17 1 72 1 1
%1 _9_9_ 18 0 81 1 0
:END
0161sample.batNGNG
calc.bat を使用したサンプルプログラムでつ。
----------------------------------------------------
@echo off
set Y=0
:Yloop
set X=0
:Xloop

call calc ADD ret %Y% %X%
echo calc ADD ret %Y% %X%    ret = %ret%

call calc SUB ret %Y% %X%
echo calc SUB ret %Y% %X%    ret = %ret%

call calc MUL ret %Y% %X%
echo calc MUL ret %Y% %X%    ret = %ret%

call calc DIV ret %Y% %X%
echo calc DIV ret %Y% %X%    ret = %ret%

call calc CMP ret %Y% %X%
echo calc CMP ret %Y% %X%    ret = %ret%

call calc ADD X %X% 1
if not "%X%"=="10" goto Xloop

call calc ADD Y %Y% 1
if not "%Y%"=="10" goto Yloop
----------------------------------------------------
以上、連張りスマソ
0162デフォルトの名無しさんNGNG
>>149
cmd.exeってすごいな
むむ、対抗して、dos3でも動くようにできないものか・・
0163jyanken.bat (1/2)NGNG
マジでけた・・・
まだdos3で実験はしていないけど
--------------------
echo off >nul
if NOT "%1"=="" goto %1
echo じゃんけんゲーム
set win=
set lose=
>player.bat
:STA
echo goo か choki か pa と打ち込んで ctrl+z の後 enter を押してください。
copy con jyanken.POI >nul
dir jyanken.POI|find "JYANKEN" >tmp.bat
tmp.bat
:POI
set player=ERR
if %2==3 set player=グー
if %2==5 set player=チョキ
if %2==2 set player=パー
if %player%==ERR echo 入力エラー
if %player%==ERR goto STA
echo %4_ | find "0_ ">jyanken.GOO
echo %4_ | find "1_ ">>jyanken.GOO
echo %4_ | find "2_ ">>jyanken.GOO
echo %4_ | find "3_ ">jyanken.CHO
echo %4_ | find "4_" >>jyanken.CHO
echo %4_ | find "5_" >>jyanken.CHO
dir jyanken.GOO|find "JYANKEN">tmp.bat
tmp.bat
0164jyanken.bat (2/2)NGNG
:GOO
set com=パー
if NOT %2==0 set com=グー
dir jyanken.CHO|find "JYANKEN">tmp.bat
tmp.bat
:CHO
if NOT %2==0 set com=チョキ
:JUDGE
echo あなた=%player% com=%com%
if %player%==%com% echo あいこでしょ!
if %player%==%com% goto STA
set jud=負け
if %player%==グー if %com%==チョキ set jud=勝ち
if %player%==チョキ if %com%==パー set jud=勝ち
if %jud%==負け set lose=★%lose%
if %jud%==勝ち set win=☆%win%
echo あなたの%jud%です!(勝ち数=%win% 負け数=%lose%)
goto STA
0165jyanken.bat (1/2 差し替え)NGNG
乱数の品質に問題があったので修正。(2/2)も☆と★の色が逆だな・・(鬱
でも今のままだと分単位でしかcomの手が変わらないんよね。
もっとまともな乱数がほすぃ(泣)
-------------------
echo off >nul
if NOT "%1"=="" goto %1
echo じゃんけんゲーム
set win=
set lose=
>player.bat
:STA
echo goo か choki か pa と打ち込んで ctrl+z の後 enter を押してください。
copy con jyanken.POI >nul
dir jyanken.POI|find "JYANKEN" >tmp.bat
tmp.bat
:POI
set player=ERR
if %2==3 set player=グー
if %2==5 set player=チョキ
if %2==2 set player=パー
if %player%==ERR echo 入力エラー
if %player%==ERR goto STA
echo %4_ | find "0_ ">jyanken.GOO
echo %4_ | find "3_ ">>jyanken.GOO
echo %4_ | find "8_ ">>jyanken.GOO
echo %4_ | find "1_ ">jyanken.CHO
echo %4_ | find "5_" >>jyanken.CHO
echo %4_ | find "7_" >>jyanken.CHO
dir jyanken.GOO|find "JYANKEN">tmp.bat
tmp.bat
0166sample.bat (2度目の訂正)NGNG
>>165
まだ乱数生成にバグがありました。comがグーを出してこない。
以下のように4行修正してください。( " の位置が間違っている)
----------------------------------
echo %4_ | find "0_" >jyanken.GOO
echo %4_ | find "3_" >>jyanken.GOO
echo %4_ | find "8_" >>jyanken.GOO
echo %4_ | find "1_" >jyanken.CHO

あと、動作には関係ないけど以下の1行は不要
----------------------------------
>player.bat
0167デフォルトの名無しさんNGNG
cmdでけっこう遊べるな。
w2k入れたから試してみるか
0168デフォルトの名無しさんNGNG
バッチファイルでテキストファイルの編集とかできますか?
0169デフォルトの名無しさんNGNG
>>145のCSV→HTML変換も一種のテキストファイルの編集だが。
0170デフォルトの名無しさんNGNG
バッチファイルでエディタでも作るのか?
0171デフォルトの名無しさんNGNG
ラインエディタなら作れそうな気がします。
0172デフォルトの名無しさんNGNG
XMLも編集ができそうだ
0173デフォルトの名無しさんNGNG
ま、 >>1 はこれでも使っとけ
http://www.vector.co.jp/soft/dos/util/se023753.html
0174デフォルトの名無しさんNGNG
公開日:95.12.22って、ずいぶん古いな
0175デフォルトの名無しさんNGNG
このスレに感動した。
0176デフォルトの名無しさんNGNG
BUとBATCPはバッチプログラマの必需品だろ。
0177デフォルトの名無しさんNGNG
pifファイルを使わずに全画面表示で実行させる方法ありますか?
0178bated.bat (1/?)NGNG
echo off>nul
if NOT EXIST BATED.RDY goto 1ST
if NOT "%1"=="" goto %1
set LST=0
del *.LIN
cls
echo --ラインエディタ(新規ファイル専用)--
:STA
echo [現在の行数は%LST%です]
echo コマンドと ctrl+z の後 enterを押してください (h ・・・ヘルプ)
copy BATED.RDY+con tmp.bat>nul
tmp.bat CMD
:CMD
set ST=%3
set ED=%4
if %2==h goto HELP
if %2==l goto LIST
if %2==d goto DEL
if %2==e goto EDIT
if %2==s goto SAVE
if %2==q goto END
goto STA
:LIST
if "%ST%"=="" set ST=0
if "%ED%"=="" set ED=%LST%
set Q=%ST%
set A=Q
set RET=LIST2
0179bated.bat (2/?)NGNG
:LIST2
if NOT EXIST %Q%.LIN goto STA
echo [%Q%行目]
type %Q%.LIN
if %Q%==%ED% goto STA
if %Q%==10 goto STA
goto ADD

:EDIT
if %LST%==10 echo これ以上行を増やせません
if %LST%==10 goto STA
if "%ST%"=="" set ST=%LST%
if %ST%==%LST% goto EDIT4
:EDIT2
set I=%LST%
set Q=%LST%
set A=Q
set RET=EDIT3
goto DEC
:EDIT3
if EXIST %Q%.LIN type %Q%.LIN>%I%.LIN
if "%Q%"=="%ST%" goto EDIT4
set I=%Q%
goto DEC
0180bated.bat (3/?)NGNG
:EDIT4
echo ---行内容と ctrl+z の後 enterを押してください
type CON|find/v "">%ST%.LIN
if NOT EXIST %ST%.LIN goto STA
set Q=%LST%
set A=LST
set RET=STA
goto ADD

:DEL
set Q=%LST%
set A=LST
set RET=DEL1
goto DEC
if "%ST%"=="" ST=%LST%
if EXIST %ST%.LIN del %ST%.LIN>nul
set I=%ST%
set Q=%ST%
set A=Q
set RET=DEL2
goto ADD
:DEL2
if %I%==%LST% goto STA
if EXIST %Q%.LIN ren %Q%.LIN %I%.LIN
set I=%Q%
goto ADD
0181bated.bat (4/?)NGNG
:SAVE
if "%3"=="" echo ファイル名が指定されていません
if "%3"=="" goto STA
set Q=0
set A=Q
set RET=SAVE1
if EXIST %3 del %3
:SAVE1
if EXIST %Q%.LIN type %Q%.LIN>>%3
if %Q%==9 goto SAVE2
goto ADD
:SAVE2
echo ファイル[%3]に保存しました
goto STA

:ADD
if "%Q%"=="10" set %A%=0
if "%Q%"=="9" set %A%=10
if "%Q%"=="8" set %A%=9
if "%Q%"=="7" set %A%=8
if "%Q%"=="6" set %A%=7
if "%Q%"=="5" set %A%=6
if "%Q%"=="4" set %A%=5
if "%Q%"=="3" set %A%=4
if "%Q%"=="2" set %A%=3
if "%Q%"=="1" set %A%=2
if "%Q%"=="0" set %A%=1
if "%Q%"=="" set %A%=1
goto %RET%
0182bated.bat (5/?)NGNG
:DEC
if "%Q%"=="" set %A%=0
if "%Q%"=="1" set %A%=0
if "%Q%"=="2" set %A%=1
if "%Q%"=="3" set %A%=2
if "%Q%"=="4" set %A%=3
if "%Q%"=="5" set %A%=4
if "%Q%"=="6" set %A%=5
if "%Q%"=="7" set %A%=6
if "%Q%"=="8" set %A%=7
if "%Q%"=="9" set %A%=8
if "%Q%"=="10" set %A%=9
goto %RET%
:1ST
cls
echo 初回起動なので、必要な準備を行います。
echo "BATED %%1 " と入力して ctrl+z の後 enter を押してください。
echo ("は入力しません。%%1の後のスペース1つを忘れないで下さい。)
copy con BATED.RDY>nul
dir BATED.RDY|find "RDY"|find/v "\">tmp.bat
tmp.bat
:RDY
if %2==9 BATED
echo もう一度正確にお願いします。
goto 1ST
0183bated.bat (6/6 最終)NGNG
:HELP
echo ---コマンド一覧表(#は行番号 0〜9)---
echo l # #    ・・・行表示
echo d #     ・・・行削除
echo e #     ・・・行入力・挿入(#省略時は最終行として追加)
echo s ファイル名・・・ファイル保存
echo q      ・・・終了
goto STA
:END
del *.LIN>nul
del *.tmp>nul
set ST=
set ED=
set LST=
set I=
set Q=
set A=
0184bated.batNGNG
ラインエディタ作りますた! 疲れたふー
基本的なコマンドしか使っていないので、dos3にも対応。
新規ファイルの編集と保存だけができます
既存ファイルの読み込みは不可
0185デフォルトの名無しさんNGNG
HSPユーザーより酷いな。
このスレ。
0186bated.bat (訂正1度目)NGNG
行削除に大バグが・・・
以下の部分を差し替えてくださいn(_ _)n

-----------------------
:DEL
set Q=%LST%
set A=LST
set RET=DEL1
goto DEC
:DEL1
if "%ST%"=="" set ST=%LST%
if EXIST %ST%.LIN del %ST%.LIN>nul
set I=%ST%
set Q=%ST%
set A=Q
set RET=DEL2
goto ADD
:DEL2
if %I%==%LST% goto STA
if EXIST %Q%.LIN ren %Q%.LIN %I%.LIN
set I=%Q%
goto ADD

:SAVE
0187デフォルトの名無しさんNGNG
>>177
>pifファイルを使わずに全画面表示で実行させる方法ありますか?

\windows\command にある start.exe で可能。
オプションなしで実行すればヘルプが出ます。
0188187NGNG
>>177
ゴメン、最大化じゃなくて全画面か。
分からん・・・
0189デフォルトの名無しさんNGNG
@echo off
:: 9x/meでdos/vしか無理
echo [=18h
echo IEでコピペ
pause >nul
exit
0190デフォルトの名無しさんNGNG
>>189
でけたーヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
ありが�d!
0191デフォルトの名無しさんNGNG
感動したョ!
何か他にもないの? Win専用
0192デフォルトの名無しさんNGNG
>>191
こんなの作った。DOS窓をAlt+Enterで全画面にしてからお願い

@echo off
rem 全画面表示がうまくいかないのでコメントアウト
rem ↓どなたかうまく行くようにしてくんなまし
rem echo [=18h
echo [f[;37;44m[K
echo [K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K
echo [K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K[1B[K
echo [10;37f[;34;47m Windows [1;37;44m
echo [1B[6C例外 06 が 0000:00000017 で発生しました。
echo [6C現在のアプリケーションを終了します。
echo [1B[6C* どれかキーを押すと、現在のアプリケーションは強制終了されます。
echo [6C* Ctrl+Alt+Del キーをもう一度押すと、コンピュータが再起動します。
echo [9Cアプリケーションで保存していないデータは全て失われます。
echo [1B[28Cどれかキーを押すと, 続行します.
echo [4B
pause >nul
0193デフォルトの名無しさんNGNG
しまった… [ を b;[ に置換して

それとWindowsフォルダ内のMsdosdrv.txtにいろいろ載ってるから読んでみ
0194デフォルトの名無しさんNGNG
[ だった…シパーイ
0195デフォルトの名無しさんNGNG
echoで > を表示する方法きぼんぬ
0196デフォルトの名無しさんNGNG
>>195
""で括れば一応表示されるようだが""も表示される
0197デフォルトの名無しさんNGNG
>>195
cmd.exeならecho ^>。command.comではできないような気がする。
0198デフォルトの名無しさんNGNG
>>195
確かdos3は>>>で出来たよ
dos5以降ではできない
dos4は不明
0199デフォルトの名無しさんNGNG
もうそろそろバッチファイルをプログラミング言語として認めていいのではないかと思う。
0200デフォルトの名無しさんNGNG
Win2k で for とかだいぶ強くなったけど、まだまだ Unix のシェルほどは
プログラム書けんがな。
0201デフォルトの名無しさんNGNG
>>200 いいや書ける
0202デフォルトの名無しさんNGNG
>>201
まぁ IF, FOR, GOTO があればフローだけなら根性で書けるかもしれんが。
外部コマンド類は追加しないと標準搭載分だけじゃきつくね?
0203デフォルトの名無しさんNGNG
> まぁ IF, FOR, GOTO があればフローだけなら根性で書けるかもしれんが。
CALLを忘れてもらっては困る。

> 外部コマンド類は追加しないと標準搭載分だけじゃきつくね?
それはUnixのシェルでも同じだ。
0204reboot.batNGNG
>>203
外部コマンド追加!(NEC-PC98xx専用)
@echo エLヘ!>reboot.com
@reboot.com

でもこういうのって無粋な気がするのよねぇ・・
0205204NGNG
おっと間違えた
203・・×
202・・○
0206デフォルトの名無しさんNGNG
CALLはオマケみたいなもので、無きゃ無いで同じことは出来ますよ(ぉ!

それより、間接参照もどきが使える点で、かなり救われているよね。
%の変数類は一旦展開されて、それから1行として実行されるので、
VBのByRefとか、C++のバーチャル関数みたいな事も何気に可能。

universal.bat
--------------
%1 %2
%4 %5

main.bat
--------------
if NOT "%1"=="" goto LABEL
echo テスト1
universal.bat echo テスト2 main.bat LABEL
:LABEL
echo テスト3
0207デフォルトの名無しさんNGNG
>>206
universal.bat
--------------
%1 %2
%4 %5× → %3 %4○
0208デフォルトの名無しさんNGNG
たしかにfor /f "usebackq"とかはずいぶん強化されてるけど、
この超DQN仕様はなんなんだよ。
0209block.batNGNG
ECHO OFF
CLS
ECHO [1C[1C[1B[1B[s
CLS
SET BAK=|SET BX=|SET BY=|SET XF=|SET YF=[1B|TYPE X.TXT
:FOR
SET BX=%BX%%XF%|SET BY=%BY%%YF%|ECHO [u%BAK% [u%BX%%XF%%BY%%YF%o
SET BAK=%BX%%BY%|IF NOT "%BX%" == "" GOTO NXR
SET XF=|ECHO
:NXR
IF NOT "%BX%" == "" GOTO NXL
SET XF=|SET BX=|ECHO
:NXL
IF "%BY%" == "[1B[1B[1B[1B[1B[1B[1B[1B[1B[1B" GOTO OUT
IF "%BX%" == "" GOTO NYD
IF "%BX%" == "" GOTO NYD
IF NOT "%BY%" == "[1B[1B[1B[1B[1B" GOTO NYD
SET YF=[1A|ECHO
:NYD
IF NOT "%BY%" == "[1B[1B[1B[1B[1B[1A[1A[1A[1A[1A" GOTO FOR
SET YF=[1B|SET BY=|ECHO
GOTO FOR
:OUT
GOTO FOR|SET BY=|ECHO [u%BAK%o[u%BAK% [u%BAK%o[u%BAK% [u%BAK%o[u%BAK%
0210block.bat (コピペ失敗やり直し)NGNG
ECHO OFF
CLS
ECHO [1C[1C[1B[1B[s
CLS
SET BAK=|SET BX=|SET BY=|SET XF=|SET YF=[1B|TYPE BLOCK.TXT
:FOR
SET BX=%BX%%XF%|SET BY=%BY%%YF%|ECHO [u%BAK% [u%BX%%XF%%BY%%YF%o
SET BAK=%BX%%BY%|IF NOT "%BX%" == "" GOTO NXR
SET XF=|ECHO
:NXR
IF NOT "%BX%" == "" GOTO NXL
SET XF=|SET BX=|ECHO
:NXL
IF "%BY%" == "[1B[1B[1B[1B[1B[1B[1B[1B[1B[1B" GOTO OUT
IF "%BX%" == "" GOTO NYD
IF "%BX%" == "" GOTO NYD
IF NOT "%BY%" == "[1B[1B[1B[1B[1B" GOTO NYD
SET YF=[1A|ECHO
:NYD
IF NOT "%BY%" == "[1B[1B[1B[1B[1B[1A[1A[1A[1A[1A" GOTO FOR
SET YF=[1B|SET BY=|ECHO
GOTO FOR
:OUT
GOTO FOR|SET BY=|ECHO [u%BAK%o[u%BAK% [u%BAK%o[u%BAK% [u%BAK%o[u%BAK%
0211コピペ失敗(|||;´Д`)NGNG
コントロールコードの、コピペってどうやるのでつか・・・
0212デフォルトの名無しさんNGNG
>>211
&#x001b;とか汁
0213191NGNG
>>192-193
Thanx!
WindowsMeには、dosdrv.txtが無いみたいです。
Windows98SEを漁ったらありました。名書。

例外イイ!
0214デフォルトの名無しさんNGNG
載ってなさそうなものを出してみる。これで合ってるよな
9x/Me PC-AT/PC-98

esc=&#x001b;
esc[0J:カーソル位置から下の部分クリア。0は省略可
esc[1J:カーソル位置から上の部分クリア
esc[2J:全体をクリア。カーソルは左上の位置に移動
esc[0K:カーソルの位置から行の右端までクリア。0省略可
esc[1K:カーソルの位置から行の左端までクリア
esc[2K:行クリア
esc[nM:カーソル位置からn行削除して下の行をつめる。1行だけの場合省略可
esc[nL:カーソル位置からn行削除して下の行をつめる。1行だけの場合省略可
esc D:カーソルが1行下に移動。カーソルが一番下にある場合スクロールアップ
esc E:カーソルが1行下の左に移動。カーソルが一番下にある場合スクロールアップ
esc M:カーソルが1行上に移動。カーソルが一番下にある場合スクロールダウン
esc[6n:カーソル位置のconによる呼び出し
esc[;8mesc"[>5hesc"esc[2Desc[m:カーソル消去(カーソルが左端の場合のみ)
esc[;8mesc"[>5lesc"esc[2Desc[m:カーソル復帰(カーソルが左端の場合のみ)
0215デフォルトの名無しさんNGNG
それとesc[;nm;を使用する場合、AT/98により出力のされ方が違う。
98の場合、背景色と前景色の同時出力ができない
ATの場合、アンダーラインが使用できない。コートページが932(日本語)だと点滅できない
最大化のesc[=nhは、98では使用できない
最大化するとATの場合、背景色と前景色の同時出力ができない。
98とATの互換性を保つため、[の後に;をつける事をしたほうがいい。esc[;nm;
0216デフォルトの名無しさんNGNG
× esc[nL:カーソル位置からn行削除して下の行をつめる。1行だけの場合省略可
○ esc[nL:カーソル位置からn行空白行を挿入。1行だけの場合省略可
0217デフォルトの名無しさんNGNG
&#x0001;〜&#x0006;=┌┐└┘│─
&#x0007;=↓、&#x000b;=四角の中に×
&#x000e;=黒点、&#x000f;=太陽みたいなマーク
&#x0010;=┼、&#x0012;=上下に伸びた矢印(↕)
&#x0014;=濃いアミカケ(▓?)
&#x0015;〜&#x0017;、&#x0019;=┴┬┤├
&#x001a;=薄いアミカケ(░?)
&#x001b;〜&#x001f;=↲↑|→←
0218デフォルトの名無しさんNGNG
訂正
×░ ○░
0219デフォルトの名無しさんNGNG
NTもANSI.SYS使ったら同じようなのできるのだろうか?
0220デフォルトの名無しさんNGNG
CコンパイラだったらCONFIG.NTにANSI.SYSを書き加えればいいらしいが、
BAT/CMDは無理っぽいが。誰か詳しく希望
0221デフォルトの名無しさんNGNG
テキストファイルに文をついかするのってバッチファイrでできますか?
0222デフォルトの名無しさんNGNG
>>221
echo ついか>>text.txt
0223デフォルトの名無しさんNGNG
>>221
type con>ファイル名
最後はCtrl+ZのあとにEnter
0224デフォルトの名無しさんNGNG
あっ、追加だったか
0225デフォルトの名無しさんNGNG
>>220
> Cコンパイラだったら
意味不明
0226221NGNG
>>222
>>223
すげ!簡単そうですね。

次のような事をプログラムを組んでやってたのを、バッチファイルでできるならしたいです。

D&Dされたファイル1のファイル名をファイル2の内容に書いて、
そのファイル2の名前を「ファイル1のファイル名」+「.avs」として出力。

こんなことをしたいのですが、バッチファイルでできそうですか?

0227デフォルトの名無しさんNGNG
echo %1 > %2
echo %2 > %1.avs
0228デフォルトの名無しさんNGNG
>>226
> D&Dされたファイル1のファイル名をファイル2の内容に書いて、
> そのファイル2の名前を「ファイル1のファイル名」+「.avs」として出力。
意味がわからん。
0229221NGNG
>>227
すげー!みじけー!っと思ったけどうまくできなかったです。
>>228

すいません。

バッチファイル A.bat

       ファイル名                内容
ファイル1 aaa.txt
ファイル2 aaa.txt.avs(aaa.avsでもいい)   F:\aaa.txt(フルパス)

ファイル1をA.batにD&Dすると、ファイル2ができる、そんなA.batが作りたいです。
0230221NGNG
echo %1 >%1.avs

これでできました。
0231デフォルトの名無しさんNGNG
>>229
とりあえずバッチファイルでできる。
NTならファイル2のファイル名はaaa.avsにできるが
9xはaaa.txt.avsじゃないといけないかもしれない。
D&Dに複数のファイルを指定できるならforやshiftを使わなきゃいけない。
とりあえず単一のファイルでaaa.txt.avsとして出力するバッチファイルは
echo %1 > %1.avs
あとは少し自分で考えてみれ。Windowsのヘルプやコマンド名 /?でヘルプが見れるから。


と書いている間に>>230というレスをされた。シクシク
0232221NGNG
>>231
ありがとうございます。
0233デフォルトの名無しさんNGNG
>>230
とりあえずもちっと日本語を勉強汁
0234デフォルトの名無しさんNGNG
ファイル名の変換バッチを作ってるのですが、
%~t1 は 03/03/10 17:47 というふうになりますが、
これを 03.03.10 とするにはどうすればよいでしょうか?
0235221NGNG
やっぱ日本語へんかなぁ?
書き直します。

%~t1の内容をバッチファイル内で編集して
03/03/10 17:47
を
03.03.10
にしたいです。

それをファイル名につけるのですが、
ファイル名のつけ方や新しい変数の設定や代入はわかるのですが、
%~t1の中の前から8文字を取り出し、/を削除する方法はどうすればいいでしょうか?
0236221NGNG
「やっぱ」は余計でした。
0237221NGNG
>%~t1の中の前から8文字を取り出し、/を削除する方法はどうすればいいでしょうか?

%~t1の中の前から8文字を取り出し、/を . に置換する方法はどうすればいいでしょうか?
0238for221.bat (文字列変換)NGNG
>>221
『for221.bat 03/03/10』で、『03.03.10』を出力しまつ。
---------
echo off
if "%1"=="CMD" goto %2
for221 CMD STA %1 %2
:STA
set work=%3|set cnt=|set stk=|set ans=|set sep=/|set chg=.
:LOOP1
set a=0|set RET=LOOP2
:LOOP2
echo for221 CMD MATCH _%work% |find "_%stk%%a%" >tmp.bat
echo for221 CMD NEXT >>tmp.bat
tmp.bat
:NEXT
set q=%a%|for221 CMD SFT 0 1 2 3 4 5 6 7 8 9 10
:MATCH
set stk=%stk%%a%|set ans=%ans%%a%|set cnt=%cnt%o
if "%cnt%"=="oo" goto SS|if "%cnt%"=="oooo" goto SS|if "%cnt%"=="oooooo" goto END
goto LOOP2
:SS
set stk=%stk%%sep%|set ans=%ans%%chg%
goto LOOP1
:SFT
shift|if NOT %2==%q% goto SFT|set a=%3|if %2==%q% goto %RET%
:END
echo %ans%
0239221NGNG
>>238
おおおおおおおおおおお!!
ありがとうございます!
勉強します
0240デフォルトの名無しさんNGNG
かちゅ〜しゃのkakikomi.txtとcookies.txt
の中身をdeleteするバッチが欲しいんですが。
ソースコードを下さい、お願いします。
0241デフォルトの名無しさんNGNG
>>240
スレ違い。
ここは「バッチファイル * プ ロ グ ラ ミ ン グ * 質問スレ」です。
0242デフォルトの名無しさんNGNG
>>221
NT系だろ? だったら%ENV:~0,8%で前から8文字を取り出せる。
ちなみに %ENV:~1,8% だと1文字目から8文字
%ENV:~-8% だと後ろから8文字
さらに %ENV:/=.% で/を.に変換できる
0243デフォルトの名無しさんNGNG
>>240
中味だけ全部消したいんだったら
copy nul kakikomi.txt
copy nul cookies.txt
0244デフォルトの名無しさんNGNG
レスありがとうございます。
>243
copy nul パス名\kakikomi.txt
としましたが構文が不正です。となってしまいました。
どこがマズいのでしょうか?
0245デフォルトの名無しさんNGNG
とりあえずOS書け
0246240NGNG
>245
winXP HomeEditionです。
パスが長すぎとかフォルダ名に空白がある(my document)とかが問題
なのでしょうか?
0247デフォルトの名無しさんNGNG
> フォルダ名に空白がある(my document)とかが問題
です。"でくくれ。あと悩んだらcopy /?を実行しろ。
0248240NGNG
>247 ありがとうございます。
0249221NGNG
>>242
ありがとうございます。
0250238NGNG
>>238 >>221
1日越しのバグ、最後の桁が抜ける。『03.03.1』
goto LOOP2 ・・・×
goto LOOP1 ・・・○
0251デフォルトの名無しさんNGNG
NT系OSからANSI.SYSを起動させる方法
//is-it-true.org/nt/utips/utips181.shtml

command.comのショートカットをどこでもいいから作成する
CONFIG.NTの複製ANSI.NT(ここではANSI.NTとする)を作成する
そのANSI.NTにこう付け加える
dosonly
device=%SystemRoot%\system32\ansi.sys
command.comショートカットのプロパティを開きプログラムタブの詳細設定を開く
CONFIGのファイル名にansi.ntファイルを指定する
実行時のディレクトリと動かしたいコマンドライン(バッチファイル)を指定する
ショートカットを実行すればansi.sysが利用できる
0252デフォルトの名無しさんNGNG
>>251
バッチファイル名を与えるとそのショートカットを作るバッチきぼん
0253デフォルトの名無しさんNGNG
>バッチファイル名を与えるとそのショートカットを作るバッチきぼん
バッチでやる仕事か?WSHで出来そうだが
0254デフォルトの名無しさんNGNG
細かな指示はできない
0255デフォルトの名無しさんNGNG
自前でバイナリ解析
0256デフォルトの名無しさんNGNG
win2kのcommand.comからsetコマンドで環境変数取得できないな
0257デフォルトの名無しさんNGNG
0258デフォルトの名無しさんNGNG
>>244
こっちのが
echo|find "a">file名
0259envsize.batNGNG
>>256
げ、じゃあ、これが使えない・・(command /e:#### の値を決めるのに便利なツール)
----------------------
echo off
if NOT "%1"=="" goto 2
set >envsize.tmp
dir envsize.tmp|find "TMP"|find/v "\">tmp.bat
tmp.bat
:2
echo 現在環境変数を、約%2バイト使用しています.
del envsize.tmp>nul
del tmp.bat>nul
0260デフォルトの名無しさんNGNG
>>259
command /cでコマンドを実行させると大丈夫みたいです
0261113NGNG
中断してたやつの続きをなんとなく作り始めてみるテスト
0262デフォルトの名無しさんNGNG
うい、がんばれー、と応援してみるテスト
0263デフォルトの名無しさんNGNG
クリップボードにある文字列をあらわす%1みたいなものってありますか?
0264保守ageNGNG
現在しりとりゲーム製作中。 公開できるといいが
(って、ここ質問スレなんだよな・・)
0265デフォルトの名無しさんNGNG
バッチのしりとりゲームって前あったよね WindowsPowerで見た
0266264NGNG
>>265
なんですとぉ!?(泣
0267デフォルトの名無しさんNGNG
>>266
もう公開はしてないようだ。
http://www.google.co.jp/search?hl=ja&q=%82%D0%82%C6%82%E8%82%B5%82%E8%82%C6%82%E8

というわけでしりとり期待してます>264
0268デフォルトの名無しさんNGNG
5インチFDDの内容をHDDにコピーしてCD-Rに焼きたいので、1枚入れて
キーを押すだけで、連続的にフォルダ作成&コピーできるようにしたいのですが。

BASICとBATのチャンポン書式で書くとこんな感じです。

for i=1001 to 2000
 MD str(i) ' フォルダ作成
 CD str(i) ' フォルダ移動
 xcopy /s f:\*.* h:
 CD ..
 pause
next

BATオンリーでやるにはどうしたらいいのでしょうか?
BUとか使ってもいいです。
0269デフォルトの名無しさんNGNG
for
0270for268.batNGNG
>>268 マジのBATオンリー(BU使わない)なら、これ。(俺ってアホだよな・・)
------------------------------
@echo off
if NOT "%1"=="" goto %1
if NOT EXIST FOR268.1BT goto 1ST
set RET=INIT|for268 MSG INIT 1001まで、激しく準備中...(ひたすら待ってね)>FOR268.CNT
:INIT
if NOT "%i%"=="1001" goto COUNTUP
find "-%i%-"<FOR268.DAT>tmp.bat
tmp.bat for268 JOB2
:JOB2
MD %2
CD %2
xcopy/s f:\*.* h:
CD ..
pause
goto END|set RET=JOB|if NOT "%i%"=="2000" goto COUNTUP
:COUNTUP
type FOR268.1BT>>FOR268.CNT
dir FOR268.CNT|find "CNT"|find /v "\">tmp.bat
tmp.bat
:CNT
goto %RET%|set i=%2|if %2==1 set i=1%3|if %2==2 set i=2%3
:1ST
echo 初回なので半角で"@"を一文字入力し、 ctrl+z の後 enter を押してください。
copy con FOR268.1BT|dir FOR268.1BT|find "1BT"|find /v "\">tmp.bat
tmp.bat
:1BT
if %2==1 for268|if NOT %2==1 for268 MSG 1ST 入力エラーです。もう一度。
:MSG
goto %2|echo %3 %4 %5 %6 %7 %8 %9
:END
0271for268.DATNGNG
>>268
データ配列は、こういう風にファイルに書けばOK。
プログラムをギリギリ1レスに詰め込んだので、エラー処理なし。
ちゃんと2000まで登録しないと無くなった時点でエラーが出るよ。
------------------------------
%1 %2 c:\フォルダ名1 -1001-
%1 %2 c:\フォルダ名2 -1002-
%1 %2 c:\フォルダ名3 -1003-
%1 %2 c:\フォルダ名4 -1004-
%1 %2 c:\フォルダ名5 -1005-
%1 %2 c:\フォルダ名6 -1006-
0272270-271NGNG
>>268
補足、現状iが3000以上になる時はプログラムの修正が必要なので注意です。
0273270-272NGNG
そしてバグ発生。
1レスに詰め込もうとして、うっかり消しちゃった。

下の位置に :JOB の行を追加してください。n(_ _)n

if NOT "%i%"=="1001" goto COUNTUP
:JOB
find "-%i%-"<FOR268.DAT>tmp.bat
0274for268.bat (全修正)NGNG
ゴメン。str()は数値を文字列にする関数でした。うっかり配列変数と勘違いしてた。
>>270-273は全部捨ててください。
-----------------------------------------------
@echo off
if NOT "%1"=="" goto %1
if NOT EXIST FOR268.1BT goto 1ST
set RET=INIT|for268 MSG INIT 1001まで、激しく準備中...(ひたすら待ってね)>FOR268.CNT
:INIT
if NOT "%i%"=="1001" goto COUNTUP
:JOB
MD %i%
CD %i%
xcopy/s f:\*.* h:
CD ..
pause
goto END|set RET=JOB|if NOT "%i%"=="2000" goto COUNTUP
:COUNTUP
type FOR268.1BT>>FOR268.CNT
dir FOR268.CNT|find "CNT"|find /v "\">tmp.bat
tmp.bat
:CNT
goto %RET%|set i=%2|if %2==1 set i=1%3|if %2==2 set i=2%3
:1ST
echo 初回なので半角で"@"を一文字入力し、 ctrl+z の後 enter を押してください。
copy con FOR268.1BT|dir FOR268.1BT|find "1BT"|find /v "\">tmp.bat
tmp.bat
:1BT
if %2==1 for268|if NOT %2==1 for268 MSG 1ST 入力エラーです。もう一度。
:MSG
goto %2|echo %3 %4 %5 %6 %7 %8 %9
:END
0275268NGNG
>>270-274
ありがとうございます。うるうる
ずいぶん長いソースになるんですね。
あとでやってみます。
フォルダ名はいちおう連番にしておいて、あとで改名するつもりでした。
なので、配列を使うほうのソースも参考になります。
どうしようかと思ってましたが、質問してよかったです。
DOS時代の大量のFDを塩漬けしたい人には役に立つと思います。
0276270NGNG
>>275
なんと、実用でしたか。
そういう目的で使うんでしたら、2度目以降の実行では下のように1行を追加すると
再起動でもフォルダ名の連番がリセットされず、しかも高速で始動できます。

if NOT EXIST FOR268.1BT goto 1ST
set RET=INIT|for268 MSG INIT 1001まで、激しく準備中...(ひたすら待ってね)>FOR268.CNT

  ↓↓↓

if NOT EXIST FOR268.1BT goto 1ST
set RET=JOB|goto COUNTUP
set RET=INIT|for268 MSG INIT 1001まで、激しく準備中...(ひたすら待ってね)>FOR268.CNT
0277デフォルトの名無しさんNGNG
良スレage
0278デフォルトの名無しさんNGNG
HOGE=$(hogehoge)

をバッチファイルでできますか?
0279デフォルトの名無しさんNGNG
>>278
perl? 意味がわからないのでなんとも。
0280デフォルトの名無しさんNGNG
環境変数ならあるが
@SET HOGE=hogehoge
@ECHO 0-%HOGE%
@SET HOGE=
@ECHO 1-%HOGE%
PAUSE
0281デフォルトの名無しさんNGNG
hogehogeの実行結果(標準出力)を変数HOGEに代入

$HOGE = `hogehoge`;
0282デフォルトの名無しさんNGNG
クリップボードにある文字列を表示するのはどうやるの?
0283デフォルトの名無しさんNGNG
>282
その分野はバッチではなくWSHの方かも
0284デフォルトの名無しさんNGNG
>>281
forでできます。
0285デフォルトの名無しさんNGNG
最近知った。バッチ使っての印刷。最後のはネットワークプリンタに印刷する方法
notepad /p [textfile]
write /p [textfile]
copy textfile.txt \\machine\printer
0286デフォルトの名無しさんNGNG
>>285
MS-DOS時代のプリンタなら、こういう事も出来ましたね・・・
でも今のWindows用プリンタではだめかも。(試したことない)
copy textfile.txt prn
type textfile.txt prn

#prnというのは、nul, con, aux等と同じく特殊デバイス名
0287デフォルトの名無しさんNGNG
× type textfile.txt prn
○ type textfile.txt > prn
0288デフォルトの名無しさんNGNG
これもなかなかじゃない?DOSスクリプトからSTDERRをSTDOUTと一緒のファイルに捕まえてる。
会社で時々重宝してる。もしかしたらcmd.exe(NTのcommand.com?)だけかも。
route 2>&1 | more
route >hoge.txt 2>&1
0289285NGNG
一緒の話題にあったのが、レジストリエディタで
HKEY_CURRENT_USER\software\Microsoft\Notepad
の
fSaveSettings

をDWord型でOn(1にしる!)にしとくとNotepadの印刷時マージンやらヘッダフッタ設定を記憶させておけるってやつ。
簡単にテキストファイルを印刷するには十分かな。
0290デフォルトの名無しさんNGNG
for /f %i in ('hogehoge') do @set HOGE=%i
0291デフォルトの名無しさんNGNG
> rem カレントディレクトリの取得
> for /f %I in ('cd') do @echo %I
D:\wrk
> rem カレントドライブを分離
> for /f %I in ("D:\wrk") do @echo %~dI
D:
%~I - すべての引用句 (") を削除して、I を展開します。
%~fI - %I を完全修飾パス名に展開します。
%~dI - %I をドライブ文字だけに展開します。
%~pI - %I をパス名だけに展開します。
%~nI - %I をファイル名だけに展開します。
%~xI - %I をファイル拡張子だけに展開します。
%~sI - 展開されたパスは短い名前だけを含みます。
%~aI - %I をファイルの属性に展開します。
%~tI - %I ファイルの日付/時刻に展開します。
%~zI - %I ファイルのサイズに展開します。
%~$PATH:I - PATH 環境変数に指定されているディレクトリを
検索し、最初に見つかった完全修飾名に %I を
展開します。
環境変数名が定義されていない場合、または検索
してもファイルが見つからなかった場合は、この
修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:
%~dpI - %I をドライブ文字とパスだけに展開します。
%~nxI - %I をファイル名と拡張子だけに展開します。
%~fsI - %I を完全なパスと短い名前だけに展開します。
%~dp$PATH:i - PATH 環境変数に指定されているディレクトリを
検索して %I を探し、最初に見つかったファイル
のドライブ文字とパスだけに展開します。
%~ftzaI - %I を DIR コマンドの出力行のように展開します
0292デフォルトの名無しさんNGNG
>>288
cmd.exeだけのはず。
0293デフォルトの名無しさんNGNG
バッチファイルでオブジェクト指向プログラミングは可能でつか?
0294デフォルトの名無しさんNGNG
>>293
BatchScript.net
0295デフォルトの名無しさんNGNG
>>294
マジかよ!?

>>290
>for /f %i in ('hogehoge') do @set HOGE=%i

/fというのがcommand.comではできんかった。cmd.exe専用でしょうか?
/f無しでやったら、%HOGE%には'hogehoge'が入りました。
0296デフォルトの名無しさんNGNG
>>295
そのへんの拡張はすべてcmd.exeのみ。
0297山崎渉NGNG
(^^)
0298デフォルトの名無しさんNGNG
>>294
ネタ?
0299デフォルトの名無しさんNGNG
>>294
(;´Д`)ハァハァ
0300デフォルトの名無しさんNGNG
つか男ならやっぱ command.com でやりたい
0301山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0302山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0303デフォルトの名無しさんNGNG
cmdは95、98、meは使えない、というか無いのでしょうもない
0304デフォルトの名無しさんNGNG
>>300
さんざん既出だと思うが
ttp://www.command.com/

こんなサイトがあったとは・・・
0305デフォルトの名無しさんNGNG
>>304 か、カコイイ・・
0306デフォルトの名無しさんNGNG
http://www.visualstudio.net/

あるかな。
0307デフォルトの名無しさんNGNG
>>303
bu.exeがあるじゃないか。
0308デフォルトの名無しさんNGNG
システムスタンプから日付と時間を取得し、その日付と時間を名前としたディレクトリを
自動的に作るバッチを作りたいと思います。

例えばこんな風です。 => \20030501-2300

ご存知の方、その方法を教えてください。

尚、当方のOSはWindows2000です。


0309デフォルトの名無しさんNGNG
システムスタンプって何?
GUID?
0310デフォルトの名無しさんNGNG
>309 「タイムスタンプ」の誤りでした。

その後、色々調べた結果、次の様にしたのですが、時間が一桁の場合(例;午前1時など)、時間の頭が
ブランクになってしまいます。
ゼロで埋める方法は無いでしょうか?


例) 午前1時のとき: 2003-0501_ 10005

   ★こうしたい =>  2003-0501_010005

ソース
set yyyymmdd=%date:/=%
set hhmmss=%time::=%
set dirname=%yyyymmdd:~0,4%-%yyyymmdd:~4,8%_%hhmmss:~0,6%
0311デフォルトの名無しさんNGNG
set hhmmss=%hhmmss:~0,6%
set hhmmss=%hhmmss: =0%
0312デフォルトの名無しさんNGNG
perで作れるからなー
0313デフォルトの名無しさんNGNG
パーは釣れるからなー
0314デフォルトの名無しさんNGNG
DEL [/P] [/F] [/S] [/Q] [/A[[:]属性]] 名前
*省略

/A 属性により削除するファイルを選択します。
属性 R 読み取り専用 S システム ファイル
H 隠しファイル A アーカイブ
- その属性以外

の/A パラメータの書式はどのように書くのでしょうか?

DEL /P /Q /A : -S *.*
か
DEL /P /Q /A : S- *.*
でうまくいかないみたいなので。Windows2000利用しています。

このようなかんじでCache削除をおこないたいのですが。Cookiesファイルとかを。
\Cookiesのindex.datファイルがSystem関係らしくてひとつのぞいて削除したいのですけれども。

rem Delete.bat
cd c:\
cd "C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files"
del /F /Q *.*
cd "C:\Documents and Settings\Administrator\Cookies"
del /F /Q /A : S- *.*
EXIT
0315デフォルトの名無しさんNGNG
>>314
自己レス

http://pc2.2ch.net/test/read.cgi/pcqa/1051866821/l50
の90-92あたりで別に回答をいただいたのでこちらは終わりにします。ありがとうございました。
0316デフォルトの名無しさんNGNG
どなたかwin2000でbu.exeを使ってる神は
0317デフォルトの名無しさんNGNG
rename %1 うっちぃ_%~n1%~x1
バッチファイルに上の文を書いて、
renameうっちぃ_.bat
というファイルネームでsendToフォルダに置いて、リネームしてます。
複数のファイルを同時にリネームできるようにするには
どうすればいいでしょうか?
0318デフォルトの名無しさんNGNG
ループさせろ
0319デフォルトの名無しさんNGNG
バッチファイルプログラミング質問スレ はここです。
0320デフォルトの名無しさんNGNG
DOS互換(Unix互換も目標)とするならいざ知らず、Windows環境なら
WSHを使うほうがいいんじゃないの?
0321デフォルトの名無しさんNGNG
バッチファイルで「Unix互換も目標」ってのは無茶を通り越して無謀。
0322デフォルトの名無しさんNGNG
"D:\Program Files\WinRAR\WinRAR" a -s -r -m5 -mc63:128t -md4096 -rr5p cvsroot *
このコマンドラインでcvsroot.rarが出来るのですが、
このcvsrootの部分を
cvsroot[yyyymmdd]という今日の日付にしたいのです。
どのようにすれば出来ますか?
0323デフォルトの名無しさんNGNG
オナニー友の会
http://homepage3.nifty.com/coco-nut/
0324322NGNG
具体的には
20%date:~4%で
2003/05/08という文字列が取れました。
ここから/を消したいのですがどうすればいいですか?
0325322NGNG
すいません解決しました
0326317NGNG
>>318
どうやってするの?
0327デフォルトの名無しさんNGNG
:loop
if "%1" == "" goto :end
rename ...
shift
goto :loop
:end
0328317NGNG
>>327
 (´Д`;) アリガトウゴザイマス…
   ∨)
   ((
0329317NGNG
複数のファイルに連番をつけるバッチファイルをつくりたいです。

@set ENV=1
:loop
if "%1" == "" goto :end
rename %1 %ENV%%~x1
@set ENV=%ENV%+1
shift
goto :loop
:end

だめなところをおしえてください。
0330デフォルトの名無しさんNGNG
どうなることを期待していて、結果がどう期待に沿わなかったか、
ちゃんと書かないところかな。
0331317NGNG
>>330
いくつかのファイルをD&Dする。
拡張子はそのままに上から順番にファイル名を、
1.txt
2.txt
3.txt
としたい。

329のバッチでやると、
1.txt
1+1.txt
1+1+1.txt
となります。

お助けを〜。
0332デフォルトの名無しさんNGNG
set /?
ちゃんと読んだ? すぐ見つかると思うんだが。
0333317NGNG
>>332
たぶん文字列として扱われてるので1+1+1みたいになるのだと思います。
数字として足し算をしたいのです。
それを変数に入れて、ファイル名にしたいのです。
0334デフォルトの名無しさんNGNG
うん、だからそのやり方はset /?ですぐ見つかるだろうと言ってるわけだが。
0335317NGNG
>>334
すべて文字列と書いてあります。
数をいれたいのです。
0336デフォルトの名無しさんNGNG
>>335
NT系じゃないヒト?かな?
for で回したらイカンのかな?
0337336NGNG
D&Dするのか、、、前言撤回。
0338317NGNG
>>336
WIN2000です。
0339317NGNG
rename %1 1%~x1
shift
rename %1 2%~x1
shift
rename %1 3%~x1
shift
rename %1 4%~x1
shift
rename %1 5%~x1
shift
rename %1 6%~x1
shift
rename %1 7%~x1
shift
rename %1 8%~x1
shift
rename %1 9%~x1
shift

こうしたらうまくいきました。
ありがとうございました。
0340デフォルトの名無しさんNGNG
>>317
set /a

cmd.exeだよな?
0341317NGNG
>>340
できたーーーーー!
ありがとうございます。m(_ _)m

0342330,332,334,340NGNG
だからset /?をちゃんと読めと再三…。
0343デフォルトの名無しさんNGNG
で、使ってるOSはみんなXPとかなのか
0344デフォルトの名無しさんNGNG
c:\program files\AAA\AAA.exe
と
d:\program files\BBB\BBB.exe
を同時に起動するにはどうすればよろしいの?
0345デフォルトの名無しさんNGNG
完全に同時は無理だけど、startで並行して動作はさせられる。
CUIプログラムを同一ウィンドウで、はダメだが。
0346デフォルトの名無しさんNGNG
echoで空行(改行のみの行)を出力する方法ってないでしょうか?

いくつかのバッチファイルを連続して呼び出している
バッチファイルがあります。呼び出される側でログとして
echoで色々と出力しているのですが、ログをパッと
見た時に処理の分け目がわかりにくくて・・・・

NT4.0で使ってます。

0347デフォルトの名無しさんNGNG
echo=
echo.
などで空行が出ます。
0348デフォルトの名無しさんNGNG
コマンドの実行結果をファイルへリダイレクトしつつ画面にも表示する事って可能でしょうか?
0349デフォルトの名無しさんNGNG
>>348
UNIX-like tools
http://www.vector.co.jp/soft/win95/util/se010511.html
の tee.exe を使えばできます。
0350346NGNG
>>347
Thanks!
ただ、echo=だと
ECHO は <ON> です。
とかいわれてしまいました。
echo.
なら、無問題です。
0351347NGNG
>>350
スマソです。
WinXPのcmd.exeではうまくいってたので。
0352デフォルトの名無しさんNGNG
echo. は昔(command.com)から使われてたテクニックだが、
cmd.exeではecho=も使えるとは知らなかった。

そもそも質問するときに環境を書かない>>346が悪い。
0353デフォルトの名無しさんNGNG
漏れいつもECHO/にしてるんだが
0354デフォルトの名無しさんNGNG
>>353
同じくecho\でもいけた。
cmd.exeでしか試してないが。
0355デフォルトの名無しさんNGNG
+とか"でもいいようだ。要するに(cmd.exeは)ファイル名に使えない文字なら
区切りとみなすっぽい。
0356デフォルトの名無しさんNGNG
>>352

> NT4.0で使ってます。

思いっきり書いてあるが、、、、
0357デフォルトの名無しさんNGNG
>>356, >>346
正直、スマンかった。
0358デフォルトの名無しさんNGNG
Htaと組み合わせたい・・・>>バッチ
できんかのぅ?
0359デフォルトの名無しさんNGNG
HTMLアプリケーションのことか?
0360デフォルトの名無しさんNGNG
>>358
どういうことをしたいの?
0361山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0362デフォルトの名無しさんNGNG
Σ(゚д゚lll)ガーン
もう6月じゃん
0363デフォルトの名無しさんNGNG
HTA検索してみた・・・。
JavaScriptからShellでよびだしたらどう?
0364デフォルトの名無しさんNGNG
<script language="JScript"><!--
function a(){
hoge=new ActiveXObject("WScript.Shell");
hoge.run("command.com /K echo HOGE");
}onLoad=document.write("<input type=button value=COMMAND起動 onclick=a()>");
//--></script>

こういうことをお望み?
当然だがJScriptだからネスケでは使えない
0365デフォルトの名無しさんNGNG
シニスメテ.bat
0366デフォルトの名無しさんNGNG
echo cd C:\Program Files\Windows Media Components\Encoder >f:\wmv9.bat
echo start /low cscript.exe WMCmd.vbs -input %1 -output %~d1%~p1%~n1.wmv -v_mode 2 -v_quality 75 -pixelratio 10 11 -v_preproc 16 -v_performance 100 -a_mode 2 -a_setting Q90_48_2 >f:\wmv9.bat

上の段の
「cd C:\Program Files\Windows Media Components\Encoder」
の部分がwmv9.batに書き込まれないのですが、なぜですか?
0367デフォルトの名無しさんNGNG
解決しました。
>を>>にしたらいいだけでした。
0368デフォルトの名無しさんNGNG
echo ホシュ
0369t-akiyamaNGNG
携帯ゲーム機"プレイステーションポータブル(PSP)

 このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
0370デフォルトの名無しさんNGNG
だれかNT4.0使ってる人はいない?
0371デフォルトの名無しさんNGNG
|∀・)
0372デフォルトの名無しさんNGNG
バッチファイルで入力した文字をテキストのある部分に書き込むことって出来ますか?WIN2K
イメージで例えると

バッチ起動
IPを入力して下さい
>*.*.*.*
ホスト名を入力して下さい
>hosuto
hostsファイルへ書き出し

みたいな感じで
やっぱ別途ソフト使わないと無理ですか?

0373デフォルトの名無しさんNGNG
>>372
> テキストのある部分に
ある部分によって難易度がかなり変わると思うが出来そうな気がする。
0374デフォルトの名無しさんNGNG
>373
まぁ極単純にいうと

ファイルの中身:

IP = ipadoresu
HOST = hosuto

で、ipadoresuとhosutoにバッチから入力するみたいな

あとwin2kって書いたけどWIN98素DOSの間違いです


0375デフォルトの名無しさんNGNG
WIN XP PROのコマンドプロンプトなんだけど、リダイレクトに1とかの数字が付くのはどうして?

例えば、
------------------------------------
type 123.txt > abc.txt
type 456.txt >> abc.txt
type 789.txt >> abc.txt
------------------------------------

みたいなバッチをかいたとき、実行画面を見たら、

C:\>type 123.txt 1> abc.txt
C:\>type 456.txt 1>> abc.txt
C:\>type 789.txt 1>> abc.txt
^^^^

みたいな感じになるんだよ。
0376デフォルトの名無しさんNGNG
>>375
1> = 標準出力
2> = 標準エラー出力
ttp://homepage2.nifty.com/winfaq/c/hints.html#548
0377デフォルトの名無しさんNGNG
>>374
cmd.exeならset /pでできるが、command.comじゃどうだろなぁ。
0378名無しさん@お腹いっぱい。NGNG
>374
環境が許すならWSH(VBS等)とかでやった方が早いかも

お前ら、wsh使ってますか? Part2
http://pc2.2ch.net/test/read.cgi/win/1022248379/l50
0379デフォルトの名無しさんNGNG
>>374
find /v で該当行を削除してから >> で最終行として足す事は可能です。
但し、行位置を変えずに編集するのは非常に難しいです。
 1 IP =
 2 HOST =
というふうに固定の行番号が入っているなら後からsortコマンドで誤魔化せるけど。
0380375NGNG
376

そうだったのか。産休。でも、見た目に気になるから、表示しないようにできないのかな。
0381デフォルトの名無しさんNGNG
標準入出力が扱えないって本当?
だからシェルスクリプトと違ってCGIスクリプトを書くのに使えないって聞いたんだけど。
0382デフォルトの名無しさんNGNG
command.com /c hoge.bat < input > output
ならできんじゃないか?
0383デフォルトの名無しさんNGNG
>>381
> 標準入出力が扱えないって本当?
うそ。

> だからシェルスクリプトと違ってCGIスクリプトを書くのに使えないって聞いたんだけど。
使える。
0384デフォルトの名無しさんNGNG
>>382-383
サンクス

だまされたのか(´Д`;)
0385デフォルトの名無しさんNGNG
下の Shell Script と同じことを Windows でやりたいんだけど、
誰か windows の batch に翻訳して。

------------------------------------------
if [ $# = 2 ]; then
  ARGS="hoge"
elif [ $# = 3 ]; then
  ARGS="tako"
else
  echo "FAILURE"
  exit 1
fi

RESULT=`XXX $ARGS`
if [ x"$RESULT" != "x" ]; then
  echo "FAILURE"
  exit 1
fi
exit 0
------------------------------------------
0386デフォルトの名無しさんNGNG
>>385
Shell Scriptを知らないから、
まずやりたいことを日本語に翻訳して。
0387デフォルトの名無しさんNGNG
>>386
翻訳してくれるのであれば、ありがとう。

---------------------------------------------
引数の数が 2 つなら ARGS 変数に hoge を代入
引数の数が 3 つなら ARGS 変数の tako を代入
それ以外なら "FAILURE" と出力して異常終了

XXX コマンドに ARGS 変数の内容を引数として渡して実行し、その結果を RESULT 変数に代入。
実行した結果が "" なら正常終了、"" 以外なら "FAILURE" と出力して異常終了
---------------------------------------------

こんな感じ
0388デフォルトの名無しさんNGNG
>>385 ズルしていいなら
--------------------
@if (0==1) rem
@echo off
if exist %0.bat cscript.exe //nologo //e:jscript %0.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
if exist %0 cscript.exe //nologo //e:jscript %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto end
@else

var WshShell = new ActiveXObject("WScript.Shell");
var oArgs = WScript.Arguments;
var ARGS;
if (oArgs.length == 2)
    ARGS = "hoge";
else if (oArgs.length == 3)
    ARGS = "tako";
else
    WScript.StdOut.WriteLine("FAILURE");

var oExec = WshShell.Exec("XXX.exe " + ARGS);
var RESULT = oExec.StdOut.ReadAll();
if (RESULT == "") {
    WScript.StdOut.WriteLine("FAILURE");
    WScript.Quit(1);
}
WScript.Quit(0);

@end/*
:end
:*/
--------------------
0389388NGNG
訂正

else
    WScript.StdOut.WriteLine("FAILURE");
↓
else {
    WScript.StdOut.WriteLine("FAILURE");
    WScript.Quit(1);
}
0390デフォルトの名無しさんNGNG
>>388
さんくす。
試してみます。
0391388NGNG
また訂正

if (RESULT == "") {
↓
if (RESULT != "") {
0392デフォルトの名無しさんNGNG
>>385
cygwin入れたほうが速くねえ?
0393デフォルトの名無しさんNGNG
あるいはmsys

>>388
exit status返せる?
0394388NGNG
バッチにすると返せないから
@else の次の行から @end/* の前の行まの内容を
.js ファイルとして cscript //nologo ***.js のように
起動すべきかな。
0395デフォルトの名無しさんNGNG
「キーの入力待ち」をするDOSアプリをバッチで
自動的に起動→終了したいのですが、
方法はありますでしょうか?

起動後にEnterを押さないと処理が始まらなくて、
終了にも任意のキーを押す必要があるのですが
0396デフォルトの名無しさんNGNG
pause
0397デフォルトの名無しさんNGNG
>>395
入力すべきキー内容をファイル(例えばbar)に保存しておいて
foo.exe<bar
のようにしてみては?
0398デフォルトの名無しさんNGNG
ageてもいいかしら
0399デフォルトの名無しさんNGNG
>>397
あ。答えてくれてらっしゃる。

超出来ました。最高です!バッチリです!ヒャホーイ!
0400デフォルトの名無しさんNGNG
echo -n '400get'
0401山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0402絢安允安安維NGNG
絢安允安安維
0403デフォルトの名無しさんNGNG
テキスト内の特定の文字列だけ書き換えさせたいのですが、
追記くらいしか検索にヒットしないのでマジ困ってます。

例を教えていただけませんでしょうか?おながいします。
0404デフォルトの名無しさんNGNG
win2kでexeを一度に大量起動するバッチファイルを作ったんだが
起動したアプリを終了しないと次のアプリが起動せず無意味
なんとかならんでしょうか

中身はこんな感じ
"C:\Program Files\hoge\hoge.exe"
"C:\Program Files\hage\hage.exe"
"C:\Program Files\mage\mage.exe"

0405デフォルトの名無しさんNGNG
>>404
start "C:\Program Files\hoge\hoge.exe"
0406デフォルトの名無しさんNGNG
>>405
2kでcmd.exe使用の場合
プログラムを""で囲う時は
start "" "C:\Program Files\hoge\hoge.exe"
とするひと

""で囲まない時やcommand.com使用時は例外
0407404NGNG
>>406
start "" "C:\Program Files\hoge\hoge.exe"
で出来ました、有難うございます。
0408山崎 渉NGNG
(^^)
0409山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0410デフォルトの名無しさんNGNG
テキストファイルに書かれている文字列を
変数に代入する方法ってありますか?
ちなみにテキストファイルには一行しか書かないものとして。
OSはW2Kです。
0411デフォルトの名無しさんNGNG
set /p var= < file
0412デフォルトの名無しさんNGNG
>> 411
ありがとうございます。
0413デフォルトの名無しさんNGNG
次のようなバッチファイルを作りたいのですが、どのようにすればいいでしょうか

・あるフォルダに入っているすべてのバッチファイルの
すべての行の左側に「echo 」と書き、
すべての行の右側に「 >>wmv9」と書く。
0414訂正NGNG
次のようなバッチファイルを作りたいのですが、どのようにすればいいでしょうか

・あるフォルダに入っているすべてのバッチファイルの
すべての行の左側に「echo 」と書き、
すべての行の右側に「 >>wmv9.bat」と書く。
0415訂正NGNG
OS はWIN2kPROです。
よろしくおねがいします。
0416^>NGNG
>>414
for %%a in (*.bat) do for /f "delims=@" %%b in (%%a) do @echo echo %%b ^>^>wmv9.bat>>バッチ.cmd
move バッチ.cmd バッチ.bat

@はbatで使用されていない文字にすること
0417訂正NGNG
>>416
ありがとうございます。
0418デフォルトの名無しさんNGNG
実行したバッチファイルが置かれているパスを取得する方法って無いですかね。
%0の中身の、バッチファイルの名前を取れれば良いんだけど・・・。
0419デフォルトの名無しさんNGNG
cmd.exeならできたはず。
help set
0420デフォルトの名無しさんNGNG
>>418
%0って起動時のコマンドラインから引数を
除いた部分が入っているだけじゃなかったっけ?

c:\>c:\bat\test
 → %0 = c:\bat\test
c:\>test
 → %0 = test
c:\>test.bat
 → %0 = test.bat
0421デフォルトの名無しさんNGNG
そのディレクトリ部分を取り出したいんじゃないの?
0422デフォルトの名無しさんNGNG
>>418
%~dp0

call/? や for/? に説明がある
0423デフォルトの名無しさんNGNG
>>421
フルパスで起動しない限りディレクトリ自体が含まれてないから無理なのでは・・
それともNTだと必ずフルパスが入ってくる?
0424デフォルトの名無しさんNGNG
>>423
>>422で解決だと思ーよ。
0425デフォルトの名無しさんNGNG
Windowsのバッチで、
echo 1
echo 2
だと1と2の間と、2の次に改行が入るけど、改行を出力せずに
echoする方法ってありますか?
0426デフォルトの名無しさんNGNG
ない
0427デフォルトの名無しさんNGNG
>>425
入らないよ。
0428デフォルトの名無しさんNGNG
cygwin入れてprintfってのもあるけど
0429 NGNG
バッチファイルで
指定のディレクトリに
あいうえお__20030917
みたいに
指定の名前+本日の日付のフォルダ
を作成するにはどうすればいいのでしょうか?
0430デフォルトの名無しさんNGNG
>>429
mkdir %指定のディレクトリ%\あいうえお_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
0431ヘルスズキNGNG
>>430
できませんでした。locale設定に依存しますね。

c:\>echo %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
水 203/9/
0432デフォルトの名無しさんNGNG
>>431
OSのバージョンかも。

C:\>ver

Microsoft Windows XP [Version 5.1.2600]

C:\>echo %DATE%
2003/09/17
0433432NGNG
Windows 2000なら

C:\>ver

Microsoft Windows 2000 [Version 5.00.2195]

C:\>echo %DATE%
水 2003/09/17

C:\>echo %DATE:~2,4%%DATE:~7,2%%DATE:~10,2%
20030917
0434デフォルトの名無しさんNGNG
mkdir あいうえお_%DATE:/=%
0435デフォルトの名無しさんNGNG
OSのバージョンもあるけど、Localeに激しく依存します。
[コントロールパネル]−[地域のオプション]−[日付](Win2kの場合ね)
で短い形式の書式を変えると%DATE%の出力フォーマットが変わります。
(コマンドプロンプトは再起動が必要)
0436435NGNG
>>434
これが一番きれいかも。曜日が入っちゃうけどね。
0437WindowsMeNGNG
C:\WINDOWS>echo %DATE%
ECHO は ON

C:\WINDOWS>
0438デフォルトの名無しさんNGNG
阪神優勝_20030915-222545_aup_vfapi.wmv
阪神優勝_20030915-222906++.avi
阪神優勝_20030915-224138+_tpr_vfapi.wmv
阪神優勝_20030915-225535+_tpr_vfapi.wmv
阪神優勝_20030916-003659_tpr_vfapi+.wmv
阪神優勝_20030916-072316+++.avi

上のようなファイルがたくさんあって、これらをすべて選択してD&Dすると、
下のようなファイル名にすることはバッチファイルでできますでしょうか?
OSはWIN2kPROです。

阪神優勝_20030915-222545.wmv
阪神優勝_20030915-222906.avi
阪神優勝_20030915-224138.wmv
阪神優勝_20030915-225535.wmv
阪神優勝_20030916-003659.wmv
阪神優勝_20030916-072316.avi
0439デフォルトの名無しさんNGNG
阪神優勝_
の部分は文字や文字の長さが変わります。
0440デフォルトの名無しさんNGNG
goto :優勝
>>439
阪神優勝_ ではなく 阪神優勝 の部分が変化するときのバッチ
%^1と%~f1って何が違うんだろう

:優勝
echo %~f1>阪神.lst
FOR /F "usebackq delims=_+. tokens=1,2" %%i IN (阪神.lst) DO move "%~f1" "%%i%%j%~x1"
if not "%~2"=="" shift & goto 優勝
del 阪神.lst
goto :eof
0441デフォルトの名無しさんNGNG
>>440
ありがとうございます。
0442デフォルトの名無しさんNGNG
ウィンドウズバッチってウェイトさせる事できるんですか?
素人質問スマンです
0443デフォルトの名無しさんNGNG
goto 開始
>>442
ウェイトって、start /wait コマンドのことじゃないよね
linuxでのsleepみたいなものを期待してるのかな
だったら標準では入っていないと思う

:開始
@if "%1"=="" @echo 終了までに%%1に指定した秒数かかるバッチ&goto :eof
@echo off
set 待小=%TIME:~9,2%
set 待秒=%TIME:~6,2%
set 待分=%TIME:~3,2%
set 待時=%TIME:~0,2%
if %待小:~0,1%==0 set 待小=%待小:~1,1%
if %待秒:~0,1%==0 set 待秒=%待秒:~1,1%
if %待分:~0,1%==0 set 待分=%待分:~1,1%
if %待時:~0,1%==0 set 待時=%待時:~1,1%
set /a 待機=((%待時%*60)+%待分%)*60+%待秒%+%1
goto 待機
0444デフォルトの名無しさんNGNG
:待機
set 動小=%TIME:~9,2%
set 動秒=%TIME:~6,2%
set 動分=%TIME:~3,2%
set 動時=%TIME:~0,2%
if %動小:~0,1%==0 set 動小=%動小:~1,1%
if %動秒:~0,1%==0 set 動秒=%動秒:~1,1%
if %動分:~0,1%==0 set 動分=%動分:~1,1%
if %動時:~0,1%==0 set 動時=%動時:~1,1%
set /a 動作=((%動時%*60)+%動分%)*60+%動秒%
if %待機% GTR %動作% goto 待機
@echo 開始時刻 %待時%:%待分%:%待秒%
@echo 終了時刻 %動時%:%動分%:%動秒%
@goto :eof
@echo %待機%
@echo %動作%
0445デフォルトの名無しさんNGNG
ヘビーループはやめれ
俺ならcygwinのsleep呼んでしまう
0446デフォルトの名無しさんNGNG
>>445
外部exe使わないならこうなるだろうなと思って書いただけ
俺ならUnxUtilsのsleep.exe使うけどな
0447デフォルトの名無しさんNGNG
choice.comの遅延
0448デフォルトの名無しさんNGNG
バッチファイルで
1.txtで中の文字が1
のファイルを
2.txtで中の文字が2
3.txtで中の文字が3

みたいにコピーする方法とかありますでしょうか?
0449デフォルトの名無しさんNGNG
やりたいことがよくわからないけど、
ファイルの中身はforで読めるからやり方あるかもね。
0450デフォルトの名無しさんNGNG
> 1.txtで中の文字が1
たったこれだけでここまで意味不明なのもすごいな。
0451デフォルトの名無しさんNGNG
現在登録されているIME辞書ツールの一覧の抽出を
「本日の日付.txt」で実行できる
と言うバッチファイルを作りたいのですが
可能でしょうか?
0452デフォルトの名無しさんNGNG
>>448
if exist 99.txt echo 100 > 100.txt
goto exit
if exist 98.txt echo 99 > 99.txt
goto exit
・・・
:exit
何をやりたいか少々不明&テストしてないけど
0453デフォルトの名無しさんNGNG
>>451
日付を環境変数に取り出す方法は、このスレでも何度か出ている。
0454デフォルトの名無しさんNGNG
バッチファイルは初心者ですが、以下の質問をさせてください。
ファイル名が
00000001.から00099999.
までのファイルを消したいのですが、特殊な名前のファイルのため下記のようにDelコマンドを打たなくてはなりません。
*やdeltreeでは消せないようです。
で、ループさせて消そうとおもったのですが、下記のバッチファイルではうまくいきません。
バッチでの変数の扱いがちょっとわたしには?なので、これ以上先へすすめなくなってしまいました・・・
どなたかお知恵をお貸しください。

@ECHO OFF
SET A=1
:LOOP
del "\\?\C:\RECYCLER\NPROTECT\0000000%A%."
SET A=%A%+1
GOTO LOOP
0455デフォルトの名無しさんNGNG
いま考えてるのは一桁ずつ0-9までLOOPを入れ子状態にしてまわす方法が
かけるのかなぁとおもってるんですが、なんか書くのがめんどくさそう・・・
0456デフォルトの名無しさんNGNG
>>454
setで計算する時は
set /a 式
変数にA使うから最初見た時間違いに気付かなかったよ

入れ子じゃないけど作ってみた

@echo off
SET A=1
:1
del "\\?\C:\RECYCLER\NPROTECT\0000000%A%."
SET /A A = %A% + 1
if %A% lss 10 goto 1
:10
del "\\?\C:\RECYCLER\NPROTECT\000000%A%."
SET /A A = %A% + 1
if %A% lss 100 goto :10
:100
del "\\?\C:\RECYCLER\NPROTECT\00000%A%."
SET /A A = %A% + 1
if %A% lss 1000 goto 100
:1000
del "\\?\C:\RECYCLER\NPROTECT\0000%A%."
SET /A A = %A% + 1
if %A% lss 10000 goto 1000
:10000
del "\\?\C:\RECYCLER\NPROTECT\000%A%."
SET /A A = %A% + 1
if %A% lss 100000 goto 10000
0457454NGNG
>456

計算式を評価して代入するにはAオプションがいるんですね。きづいてなかったっす。
昨日はあきらめてVBでやることにして、動かしたんですが、あやまってDOS窓開きまくりでファイル消し始めて、
ある程度は消えたんですが、OSあぼーん、ソースも保存してなくてあぼーんしたので放置してました。
いただいたソースで今無事全ファイル削除できました。ありがとうございました。
桁が繰り上がるたびに0の数減らすんですね。これも思いつかなかったっですw
0458デフォルトの名無しさんNGNG
>>454
del \\?\C:\RECYCLER\NPROTECT\0000000*.
で消せない?
0459454NGNG
>458

ちょっとそれはわからないです。もうファイル消しちゃったんで。
もしかしたら\\?\がポイントかもしれないから消せるかもしれませんね・・。
0460454NGNG
といまおもったんですが、""でくくらないと消せないようなので*は使えないんじゃないでしょうか
0461デフォルトの名無しさんNGNG
数字に限定しないなら
for %a in (000?????.) do del "\\?\C:\RECYCLER\NPROTECT\%a"
でよかったかも
0462454NGNG
>461

DOSバッチのFORの説明をあるサイトで見たんですが、VBのForとはかなりちがうみたいで理解できなかったっすw。
なるほど、そうかくと?????のなかに数字が00001からひとつずつ増えていくんですね?
0463デフォルトの名無しさんNGNG
>>462
?は任意の1文字

FOR /L あるの忘れてた。使えば5行ですんだかも
0464デフォルトの名無しさんNGNG
こういうのを書いてみた。WindowsのMS-DOSプロンプトでスレッド間通信。
(PureDOSでSJIS扱えるまともなMultithreaderがあればなぁ…)
セッション切り替えを実装していないのでペア間通信しかできない。
これ自体、環境変数ではなくファイル受け渡しという手もあるので
別にバッチやDOSではなくても可能。応用すれば、C/S型のアプリや
Windows + DOSといったhybrid programが作成可能。

使用方法はDOSプロンプトを2つ同じフォルダで起動。
一方で、このバッチを起動して、もう一方でenvdata.batを生成。
終了方法は、ソース読め(w

--- cut here ---
@echo off
:: 環境変数を応用したスレッド間通信。
:: envdata.batの内容は set 環境変数名=変数内容とする。
:: by.Chysanthemum Kernel Project(謎)
:: this code is public domain. you use is as you like.
:: but don't use commercial this condition.

set thread.env=running

:loop
if exist envdata.bat call envdata.bat
if "%thread.env%"=="halt" goto halt
goto loop

:halt
set thread.env=
del envdata.bat
0465 NGNG
指定のフォルダを削除するにはどうすればいいのでしょうか?
DELTREEを使うのはわかるのですが、
バッチファイルとして認識されていませんと表示されて削除できません

教えてください
0466デフォルトの名無しさんNGNG
>>465
rd/s/q C:
0467デフォルトの名無しさんNGNG
>>465は、今頃実行してるんやろか・・・。
0468 NGNG
>>467
してるわけないじゃん
Cドライブの中身全部消えるじゃん

本当の答えを教えてください
0469デフォルトの名無しさんNGNG
>>468
そんなにDELTREE使いたいなら
Win98のCOMMANDフォルダから取ってこいよ
0470デフォルトの名無しさんNGNG
>466=>467 なんかワロタ
0471デフォルトの名無しさんNGNG
すいません、質問お願いします。使用しているのはXP HOMEのコマンドプロンプトです。

「A%20B.txt」という名前のファイルを「A B.txt」にリネームするバッチを組みたいの
ですが、現状だと%2をコマンドライン引数と認識しているようで上手くリネーム出来ま
せん。%を%そのものの文字として扱うための表記はどうすればいいのでしょうか?
0472デフォルトの名無しさんNGNG
%%
0473471NGNG
>>472さん
出来ました。こんな単純な話だったんですね(汗
どうもありがとうございます。
0474デフォルトの名無しさんNGNG
フォルダを削除する時に
Deltree "C:\新しいフォルダ"
とやると

操作可能なプログラムまたはバッチ ファイルとして認識されていません
とでます
削除するにはどうすればいいのでしょうか?
0475デフォルトの名無しさんNGNG
Windowsのバージョンは?
0476デフォルトの名無しさんNGNG
>>475
xpです
RMDIRでやろうとすればから空のフォルダのみだし
0477デフォルトの名無しさんNGNG
>>476
rmdir /?
0478デフォルトの名無しさんNGNG
rmdir /s
で出来る
0479デフォルトの名無しさんNGNG
deltree.exe/y = rd/s/q
0480デフォルトの名無しさんNGNG
list.txtから一行ずつテキストを読み込んで%line%に受け取ることはできますか?
for %%line in "list.txt" do echo %%line
みたいなことをやりたいのですが。
0481デフォルトの名無しさんNGNG
>>480
このスレ最初から読んでみ。
0482デフォルトの名無しさんNGNG
ECHO 文字列>test.txt
とするとtest.txtに「文字列」のあとに改行がついてしまいます
改行をなくすまたは最初から出力させない方法、テクニック(コピーしたり連結したりをふくむかも)
があれば教えてください

文字列にCDを入れて、CD >test2.txtで作ったものと
連結してバッチファイルを作って、元のディレクトリに戻るのに使います。
0483デフォルトの名無しさんNGNG
>>482
あらかじめ改行を含まない
CD_[EOF]
("_"はスペース)
のような内容のファイル(たとえばtest1.txt)を作っておいて
copy /Y test1.txt test2.txt
CD >> test2.txt
とか。

Win2k/XPなら pushd/popd を使ったり
echo cd %CD% > test2.txt
で簡単にできるんだが…。
0484デフォルトの名無しさんNGNG
>>482-483
9X系の場合
echo prompt CD $P >tmp.bat
command /c tmp.bat | find /v "prompt" >>test2.bat

0485デフォルトの名無しさんNGNG
コマンドプロンプトのショートカットで、
そのショートカットが開くと同時に、カレントディレクトリが、
そのショートカットがあるディレクトリにするには、プロパティの作業フォルダを
何にすればいいのでしょうか。教えてください
%~d0%~p0でうまくいっていたのですが、急に
C:\Program Files\Common Files\System\Mapi\1041>
で始まるようになってしまいました
0486デフォルトの名無しさんNGNG
MP3のインデックスを作成
@echo off
cd "C:\My Music"
dir /s /b * > 全て再生.m3u
for /D /R %%i in (*) do (
 pushd %%i
 dir /s /b * > 全て再生.m3u
 popd
)
rem pause
0487デフォルトの名無しさんNGNG
REM Javaのソースをコンパイルして実行
javac %1
java %1
PAUSE
0488487NGNG
拡張子 .java が取れてないですね。
どうやって取ったらいいんですか?
0489デフォルトの名無しさんNGNG
そもそもドットと拡張子を入力しないでいいようにバッチを書き直せばw

w2k以降なら %~n1 やら %~dpn1 とか使えるよ。
0490487NGNG
Hellow_Java.javaを第一引数に与えると、コンパイルして、成功して、
Hellow_Java.classが出来たら実行する物を作ってみました

Hellow_Java.classが作成されているのにEXISTで
%~n1%.classを認識してくれませんでした。

EXISTによる確認なしだと、実行までしてくれるのですが。

後は、コンパイル実行して、エラーで前にコンパイルした同名の
〜.classがあるときは実行しないようにする方法が思いつきません


IF EXIST %1% GOTO FA
GOTO FF
:FA
javac %1%
IF EXIST %~n1%.class GOTO FB
GOTO END
:FB
java %~n1%
GOTO END
:FF
ECHO JAVA のソースファイルファイルをアイコン上にドラッグしてください。
:END

PAUSE
0491デフォルトの名無しさんNGNG
>>490

>>489でっす。あれからも頑張ってたのか。
そこまでやるんなら make を使う
0492デフォルトの名無しさんNGNG
>>490

?
javac の戻り値で調べるのはだめ?
以下は引数無しだとエラーになるので適当に工夫してくれ。

@echo off

setlocal enableextensions

set srcf=%1
set binf=%~dpn1.class

if exist %srcf% (
 echo javac "%srcf%"
 if %ERRORLEVEL% equ 0 (
  echo java "%binf%"
 )
) else (
 echo java のソースファイルファイルをアイコン上にドラッグしてください。
)

pause
endlocal

というか、make 使うほうが良(ry
0493バッチ初心者NGNG
あるタブ区切りのaaa.txtファイル内の指定されたタブを編集したいのですが
方法がわからないので教えていただけませんでしょか?

OSはWIN2000です。条件は下記の通りです。

・1行が5つのタブで区切られている。
・ファイルによって行数が異なるので最終行まで見ないといけない。
・目的の区切られたタブの場所にデータが存在しない行とする行がある。

この場合、例えば全行の2個目のタブの場所に先頭行から順に最終行まで連番を振りたい場合
どのように処理すればよろしいのでしょうか?
0494デフォルトの名無しさんNGNG
>>493
バッチファイルでそれをやるのは辛いような。
フィルタ系の処理はPerlやWSHでやったほうがいいと思うよ。
0495デフォルトの名無しさんNGNG
シフトキーやコントロールキーの押下状態をERRORLEVELか何かにセットして判定に使えるコマンドって無い?
SHIFT押しながら起動するとデバッグ情報出すとかやりたいんだけど。
0496デフォルトの名無しさんNGNG
>>495
作れば?
それともバッチファイル以外は作れないの?
0497495NGNG
>>496
標準でそういった機能があるかどうか聞いているだけ。
0498デフォルトの名無しさんNGNG
>>494
この程度ならawkだろ。
0499デフォルトの名無しさんNGNG
>>498
○nix ならそれでいいけど、Windows ならわざわざ awk をインストールするのがめんどい。
vbs でいいと思うが。

Option Explicit

Const ForReading = 1
Const ForWriting = 2
Dim FileSystem = CreateObject("Scripting.FileSystemObject")
Dim InFile
Set InFile = FileSystem.OpenTextFile("aaa.txt", ForReading, false)
Dim OutFile
Set OutFile = FileSystem.OpenTextFile("bbb.txt", ForWriting, True)
Dim Number
Number = 1
While Not InFile.AtEndOfStream
 Dim Fields
 Fields = Split(InFile.ReadLine, vbTab, 5)
 Fields(1) = CStr(Number)
 Number = Number + 1
 OutFile.WriteLine(Join(Fields, vbTab))
WEnd
OutFile.Close
InFile.Close

動かしてないから、バグってたら直してくれ。
0500デフォルトの名無しさんNGNG
>>493>>494>>498-499
↓のような aaa.bat を作ってコマンドプロンプトから
aaa aaa.txt bbb.txt
と打ってやってもできます。バッチファイルにJScriptを埋め込む技を使ってます。

@if (0==1) rem [aaa.bat]
@echo off
if (%2)==() goto usage
if exist %0.bat %0.bat %1 %2
cscript.exe /nologo /e:jscript %0 %1 > %2
goto end
:usage
echo %0 infile outfile
goto end
@else
var args = WScript.Arguments;
var line = 0;
var f = (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(args(0));
while (! f.AtEndOfStream)
  WScript.StdOut.WriteLine(f.ReadLine().replace(/^([^\t]*\t)[^\t]*\t/, "$1" + ++line + "\t"));
f.Close();
@end/*
:end
:*/
0501500NGNG
>>500 下から5行目のreplaceのところはもうちょっと単純に:
    WScript.StdOut.WriteLine(f.ReadLine().replace(/^(.*?\t).*?\t/, "$1" + ++line + "\t"));
0502495NGNG
pathextに.jsあるんだから無理にバッチファイルに埋め込まんでも
0503デフォルトの名無しさんNGNG
>>502
既定でwscriptで起動される環境でもcscriptで起動させるため。
0504教えてマソNGNG
IEの履歴、テンポラリーファイル、クッキーを削除するバッチを
作ろうかと思ってる。
クッキーは無事消せたんだが、テンポラリーファイルと履歴が消
えてくれないの・・・

フォルダ移動まではうまく逝ってて、削除しようとすると失敗。
コマンドプロンプトからやってみると、ファイルが何も見えない
感じになっている。

ちなみに当方の環境は、XPで、そして共用パソコンだ。
これはxpのセキュリティが強すぎるせいなのか??
そして解決策はあるのか??

教えてお願いエロい人!
ちなみにかなーりさがってたのでageます。許して下さい。
0505デフォルトの名無しさんNGNG
call hoge.mdb
では普通にAccessでhoge.mdbが起動するのに、
start hoge.mdb
ではDOS窓で起動(?)しちゃうのはなんででつか?
ヘルプだとstartでもいいような書き方なのに。
callだとAccess起動後もDOS窓が残るんで困るんす。
ちなみに、Win2000す。
0506デフォルトの名無しさんNGNG
>>504
explorer.exeが起動していると、index.datが共有違反になり消せなくなる。
回避するには、explorer.exeを殺しておく必要がある
0507デフォルトの名無しさんNGNG
新年ズサー
0508デフォルトの名無しさんNGNG
ワンクリックでアプリを2個起動させるバッチファイルを作りたいんですが

D:\software\aaaa\xxxxx.exe
D:\software\bbbb\xxxxx.exe

じゃだめなんでしょうか ̄/ ̄)。。
うまくうごきません
0509デフォルトの名無しさんNGNG
start D:\以下略
start D:\以下略
0510デフォルトの名無しさんNGNG
>>508
それだと一番目のが終らないと二番目のは起動しない。
0511デフォルトの名無しさんNGNG
batファイル
format c: /q <go

goファイル
y
0512デフォルトの名無しさんNGNG
やってみたことが無い奴ほどformat c:を書きたがる
0513デフォルトの名無しさんNGNG
>>511
起動した瞬間にフォーマットでつか?
0514デフォルトの名無しさんNGNG
IFで比較対象の文字列にワイルドカードを用いる方法を教えてください。
IF "abc"=="*bc"で真にしたいのです。。
0515デフォルトの名無しさんNGNG
@ECHO (ESC)[31mError(ESC)[0m
(ESC):エスケープシーケンス

上記のように書いて、文字を赤で表示するようなことが出来た気がするのですが、
2000/XPでは出来ないのでしょうか?
もし、この方法で出来ないとしても、他の方法でできるとしたら、その方法を教えてください。
0516デフォルトの名無しさんNGNG
Win32API使えば出来るけどバッチファイルからは無理じゃないの。
あとcygwinでも出来る。
0517デフォルトの名無しさんNGNG
>>516
残念。
「バッチファイルで出来るならやろうかな」程度の事だったので、諦めます。
ありがとう。
0518デフォルトの名無しさんNGNG
がいしゅつかもしれませんが、
9x系をシャットダウンできるコマンドはありませんか?
NT系なら、
shutdown -s -t 0
一発なんですが……。
0519デフォルトの名無しさんNGNG
>>515
config.ntにansi.sysを組み込んで、command.comを起動すれば出来る
0520518NGNG
>>515じゃないけど質問。
それどうやるの?
Config.ntに
device = c\:windows\system32\ansi.sys
ってやったけどうまくいかない。
環境はWinXP。
0521デフォルトの名無しさんNGNG
>>520
NT系じゃansi.sysは無効なんじゃなかったか。
0522デフォルトの名無しさんNGNG
>>520
さらにconfig.ntの最後の行に
DOSONLY
を追加しれ。
これでansi.sysが有効になるはず。(ただし16bit DOSプログラムにのみ有効)
0523デフォルトの名無しさんNGNG
bu.exeを2000で使えてる方はいらっしゃいませんか?
0524デフォルトの名無しさんNGNG
( ´,_ゝ`)ブッ
0525518NGNG
>>522
なに!
じゃあ、32bitは動かんのか?
それじゃあ意味がありまへんがな。
0526デフォルトの名無しさんNGNG
>>523
 cmd.exeからではなくcommand.comから起動してみてください。
それでだめならばxtrやらC/C++/perlで同等のコマンドを作るしかないです。

>>525
 cmd.exe上ではエスケープシーケンスが使えなかったはずでは?
諦めてWinbatchEhやら他の言語を使いましょう。


0527デフォルトの名無しさんNGNG
>>518

ttp://arena.nikkeibp.co.jp/tec/win/gaz/362/
0528518NGNG
>>527
thanks!
0529529NGNG
以下のようなバッチファイルを記述したいと考えています。

起動されたフォルダ内で処理をするabcというプログラムがあるとして、
バッチファイルを起動するとそのフォルダとそのフォルダ以下のサブフォルダを含めて
abcプログラムの処理をしたいと考えています。

つまり、あるフォルダでバッチファイルを起動するとそのフォルダ以下のサブフォルダを検出し
サブフォルダに移動してabcというコマンドをうつということを全サブフォルダで
行いたいわけです。

なにかよいアイデアはあるでしょうか?
0530デフォルトの名無しさんNGNG
手っ取り早くcygwin入れてfind+xargs

ってーいうのはこのスレでは反則ですか?
0531デフォルトの名無しさんNGNG
>>529
>>486
0532デフォルトの名無しさんNGNG
>>529
for /R . /D %d in (*) do (cd "%~fd" & abc)
0533529NGNG
>>530-532
ありがとうございます。
/D と /R でいけるみたいですね。
それを使ってやってみます。
0534デフォルトの名無しさんNGNG
Windows 98のコマンドプロンプトで %~dp0 に相当する値を
取得する右方方を教えてください。

おねがいします
0535デフォルトの名無しさんNGNG
DLLがエクスポートしている関数を呼び出せたと思う。
0536sageNGNG
>>534 ヒントは >>484 にある。
0537ひさまつNGNG
教えて君で申しわけないのですが、SORT
テキストファイルやテキストデータを昇順/降順に並べ替えたいのです。
でも、書籍の通りにやっても下記エラーになってしまいます。
OSは98SEです。

Microsft(R) Windows 98
(C)Copytight Corp 1981-1999

C:\WINDOWS>\temp1>dir /b
コマンドまたはファイル名が違います。


SAMPLEをなぞってるだけなんですが・・・。
ちなみにtempフォルダだとややこしいと思って、temp1のフォルダにしてるだけ
なんですけど。

c:\temp>dir /b -------------DIRコマンドでファイル名のみを表示した
a-file.txt
b-file.txt
c-file.txt

c:\temp>dir /b | sort /r -----------パイプ処理で逆順に並び替えて表示
c-file.txt
b-file.txt
a-file.txt
0538デフォルトの名無しさんNGNG
c:\temp>
↑は入力する必要は無い。
"dir /b | sort /r"
だけを入力すればいい。
0539デフォルトの名無しさんNGNG
マルチ
0540ひさまつNGNG
ここまでは、出来ました。

C:\WINDOWS>dir /b C:\TEMP1
c-file.txt
a-file.txt
b-file.txt
0541ひさまつNGNG
ヾ(@^▽^@)ノわはは
出来ました〜〜〜〜〜。
C:\WINDOWS>dir /b "C:\TEMP1" | sort /r
c-file.txt
b-file.txt
a-file.txt
この人の著書はだめぽ
ttp://www.iijima.nu/
0542デフォルトの名無しさんNGNG
killみたいなコマンドはないんでしょうか?
atで起動したのを殺したいんですが・・・
0543デフォルトの名無しさんNGNG
>>542
XPならtaskkill.exe
0544デフォルトの名無しさんNGNG
Win2000 Support Tools に kill.exe がある
0545デフォルトの名無しさんNGNG
NT Resource Kit にもある
0546デフォルトの名無しさんNGNG
Cygwinにもある
0547デフォルトの名無しさんNGNG
w2kを使ってるんですが、デフォルトでは無い
ということでしょうか。ありがとうございました。
0548デフォルトの名無しさんNGNG
すいません。ワールドカードを使いたいのですが。
エラーが出ます。

D:\Temp>type 文書*.txt
ファイルが見つかりません. - 文書*.txt
0549デフォルトの名無しさんNGNG
>>548
typeはワイルドカード指定不可。

for %i in (文書*.txt) do type %i
0550デフォルトの名無しさんNGNG
>>548
D:\Temp>copy 文書*.txt con
0551デフォルトの名無しさんNGNG
質問なのですが、
A.txtの中に入っている文字列と、
B.txtの中に入っている文字列を重複チェックを掛けて、
重複している文字列だけ消去して、C.txtに出力というバッチはどう書いたらよいのでしょうか?
どなたかおわかりになられる方いらっしゃいましたら、
ご教授お願いします。
0552デフォルトの名無しさんNGNG
標準じゃ無理
uniq探して使っとけ
0553デフォルトの名無しさんNGNG
uniqよりはcomm
0554デフォルトの名無しさんNGNG
>>549
あー、出来ました。
有難う御座います。
>>550
まだ、勉強不足なので処理がわかりません。

D:\Temp>copy 文書*.txt con
文書1.txt
昨日は雨でした。
今日は一日曇ってます文書2.txt
来週は雨が多く、晴れの日が少ないでしょう。 1 個のファイルをコピーしまし
た.
0555デフォルトの名無しさんNGNG
>>550
理解できたと思います。
これでいいのでしょうか?
結果です。
AドライブのFDにちゃんとファイルがコピーされてました。
D:\Temp>copy 文書*.txt a:
文書1.txt
文書2.txt
2 個のファイルをコピーしました.

0556デフォルトの名無しさんNGNG
あー、でもconだと何処にコピーされてるか解ってないな。
勉強しておきます。
解らなかったら、質問しても良いですか?
0557デフォルトの名無しさんNGNG
>>556
console
0558デフォルトの名無しさんNGNG
質問です。

引数があるかどうかをチェックするのに
 IF "%1" = ""
で判断して、それはうまくいっているのですが、
デスクトップとかにあるファイルを渡すと、
「andの使い方が間違っています」と表示されて、強制終了します。

どうもパスにスペースを含んでいるのがまずいらしいというのは見当がついたんですが、
""で囲んでもダメとなると、どうやって回避したものかわかりません。
なにかうまい方法はないでしょうか。
0559デフォルトの名無しさんNGNG
環境とどういうファイル名かも書け。
0560デフォルトの名無しさんNGNG
>>558
IF "%~f1" == ""
0561558NGNG
>>560
無事判定できました。
ありがとうございました。
0562556NGNG
>>557
console ←これは、どうやって探すのですか?
Windowsの検索では、TXTの拡張子が出てきません。
DOSでやらないと探せないのでしょうか?
0563デフォルトの名無しさんNGNG
>>562
con という、コンソールデバイスだよ
0564556NGNG
>>563
ちょっと調べておきます。
解らなかったら、又、質問させてください。
0565あぼーんNGNG
あぼーん
0566あぼーんNGNG
あぼーん
0567あぼーんNGNG
あぼーん
0568あぼーんNGNG
あぼーん
0569デフォルトの名無しさんNGNG
  /::::::::::::::::::::::::::\
  /::::::::::::::::::::::::::::::::::::\
 |:::::::::::::::::|_|_|_|_|
  |;;;;;;;;;;ノ   \,, ,,/ ヽ      ちょっと聞いてくれよ。
  |::( 6  ー─◎─◎ )
  |ノ  (∵∴ ( o o)∴)
/|   <  ∵   3 ∵>  
::::::\  ヽ        ノ\   
:::::::::::::\_____ノ:::::::::::\

昨日、クライアントに会った帰りに松屋逝ったんだけど
すげーデブの客からチケット渡された店員が奥に向かって「ブタ一丁」と叫んだ時
店内客全員が笑いをグッとこらえる重苦しい雰囲気に包まれたのを感じて
口の中の牛めしを吹き出しそうになっちまったよ。
0570デフォルトの名無しさんNGNG
教えてください。
batファイルでftpコマンドがかかれているファイルを読み込みFTPでサーバからファイルを
ダウンロードを行います。もしダウンロードに成功した場合は.okファイルを作り,ダウンロード
に失敗した場合には.ngファイルを作りたいのですがどうもうまくいきません。
0571デフォルトの名無しさんNGNG
>教えてください。
なにをですか?

>どうもうまくいきません。
なにがですか?
0572デフォルトの名無しさんNGNG
すいません。教えて君で申しわけないのですが。
カレントディレクトリ内に3個のサブディレクトリを作りたいのですが
上手く出来ません。結果がこうです。
D:\>md test

D:\>cd test

D:\test>md test001

D:\test>dir /w

ドライブ D: のボリュームラベルはありません.
ボリュームシリアル番号は 11D3-2521
ディレクトリは D:\test

[.] [..] [TEST001]
0 個 0 バイトのファイルがあります.
3 ディレクトリ 186,802,176 バイトの空きがあります.

D:\test>md test002 test003 test004
パラメータが多すぎます. - test003
0573デフォルトの名無しさんNGNG
訂正
すいません。教えて君で申しわけないのですが。
最初にd:\testディレクトリを作り、その後にカレントディレクトリ内に
1個のサブディレクトリ作り、test002 test003 test004という3つのディレクトリを1度に
作り、dada\temp\00という3階層のディレクトリを1度に作りたいのですが
上手く出来ません。結果がこうです。
D:\>md test

D:\>cd test

D:\test>md test001

D:\test>dir /w

ドライブ D: のボリュームラベルはありません.
ボリュームシリアル番号は 11D3-2521
ディレクトリは D:\test

[.] [..] [TEST001]
0 個 0 バイトのファイルがあります.
3 ディレクトリ 186,802,176 バイトの空きがあります.

D:\test>md test002 test003 test004
パラメータが多すぎます. - test003
0574573NGNG
このようにしたいのですが

D:\test
|_dada
| |___temp
| |__00
|
|_______test001
|
|
|_______test002
|
|
|_______test003
|
|
|
|_______test004
0575573NGNG
OSはWin98SEです。
何度もすみません。
0576デフォルトの名無しさんNGNG
一度には無理分けて作れ
md test
cd test
md test001
md test002
md test003
md test004
0577デフォルトの名無しさんNGNG
md が1個しか引数とれないんじゃ仕方ないんじゃね?
0578デフォルトの名無しさんNGNG
>>575
:md
md %1
@shift
@if not "%1"=="" goto md
0579573NGNG
>>578
ごめんなさい。
ちょっと記述して貰いたいのですが・・・

ちょっとその記述だけでやってこうなるから・・。
どこに何を記述するか、教えてください。
バカですから、やってしまいました。
結果です。

D:\Temp>:md

D:\Temp>md %1

D:\Temp>@shift
コマンドまたはファイル名が違います

D:\Temp>@if not "%1"=="" goto md
コマンドまたはファイル名が違います
0580デフォルトの名無しさんNGNG
Win98SEでshiftって使えなかったっけ
それとも@を付けたのがいけないのか
0581デフォルトの名無しさんNGNG
578は地雷
0582デフォルトの名無しさんNGNG
>>570
FTPソフトに何を使ってるのか分からんが、ダウンロード後に
IF EXIST "filename" GOTO hogehoge
で分岐させりゃ、いいんじゃね?
うまくいかないなら、ダウンロードそのものがうまくいってるのかどうか。
へたすっと、バッチファイル関係ないかも知れないしな。

そもそも製作依頼スレじゃないよな、ここ。
うまくいなかなかったバッチファイルなりを載せないと何をしたいのかも分からん。

質問ヘタならソースで語ってくださいな。
0583デフォルトの名無しさんNGNG
>>580
>>579はコマンドラインから打ったんだろ。
>>578の:mdから後をバッチファイルに汁>>573
0584デフォルトの名無しさんNGNG
>582
ファイルが途中で切れてもわからない。errorlevelでは拾えない。
FTPサーバのステータスコードを見るしかない。
0585573NGNG
>>583
すいません。バッチの作り方がまだ、解ってないのです。
申し訳ありません。結局、下記のようにするしかないのかな?

D:\test>md \test\test001

D:\test>md \test\test002

D:\test>md \test\test003

D:\test>md \test\test004

D:\test>md \test\dada

D:\test>md \test\dada

D:\test>md \test\dada\00
0586デフォルトの名無しさんNGNG
そうだよ。つかヘルプ嫁。
0587デフォルトの名無しさんNGNG
やりたいコマンドメモ帳に書き出して .bat で保存しる
0588573NGNG
>>586
そうですね。
「優しく解る!図解MS-DOS]見てます。
後、「MS-DOSVer.6.2ハンドブックPC-9800シリーズ」
とかWindows XP/2000/ME/98SE DOS/コマンドプロント辞典があります。
>>587
ちょっと挑戦してみます。
0589デフォルトの名無しさんNGNG
unified 形式って何ですか?-cとは違うんですか?
0590589NGNG
誤爆スマソ
0591デフォルトの名無しさんNGNG
00.jpgというファイルを00YYMMDDhhmmss.jpgみたいな感じで
1秒毎にファイル保存していきたいのですが、
そのバッチファイルを作って下さい。
お願いします。
0592デフォルトの名無しさんNGNG
>>591
バッチファイルを作るのは貴方です。
ここは貴方が作っている最中に
分からなくなった所を聞くスレです。

なにが分からないのですか?
0593デフォルトの名無しさんNGNG
>>592
指定したファイルを保存するところかな〜
0594デフォルトの名無しさんNGNG
>>593
hhじゃなくてhでいいなら
copy %1 "%~n1%date:~4,2%%date:~7,2%%date:~10,2%%time:~0,2%%time:~3,2%%time:~6,2%%~x1"
0595デフォルトの名無しさんNGNG
ある段階の作業でストップさせ、また残りの続きをさせるにはどういう命令を書けばいいんでしょうか

XP付きのブータブルISOを自動でつくるバッチなんですが
自分の環境では1ファイルを大文字にしないとエラーが出てしまうので、イメージにするまえにsp1当てた段階で一度止めたいんです
0596デフォルトの名無しさんNGNG
XPsp1付きのブータブルISOです。スマソ
0597デフォルトの名無しさんNGNG
pause
0598デフォルトの名無しさんNGNG
>>595
素直にバッチファイルを2つに分けてはどうか
0599デフォルトの名無しさんNGNG
リモートシェルコマンドで戻り値が返ってくるのですが、
どうやって受け取ったらよいでしょうか?
rsh hostname -l user -n command >hoge.txt

上記のコマンドだと、
hoge.txtにはリモートで実行したコマンド(command)の結果が書き込まれてしまうようです。

よろしくお願いします。
0600599NGNG
>>599
> リモートシェルコマンドで戻り値が返ってくるのですが、
> どうやって受け取ったらよいでしょうか?
> rsh hostname -l user -n command >hoge.txt
>
> 上記のコマンドだと、
> hoge.txtにはリモートで実行したコマンド(command)の結果が書き込まれてしまうようです。
>
> よろしくお願いします。
>

ERRORLEVELで取得出来ました。
0601デフォルトの名無しさんNGNG
バッチファイルの引数を「%~1」で受けているのですが、
Win2000Proでは問題ないのですが、WinNT4.0Serverでは引数が取得できません。
引数の修飾子「~」はNTではサポートされていないのでしょうか?
ご存じの方いましたら、教えてください。


もうひとつ、
下記ソースはWinNT4.0Serverではエラーになってしまいます。

for /F "tokens=1,2,3 USEBACKQ" %%A in (`find /V /C "" log1.txt`) do set FL=%%C
if %FL% == 0 goto NG
set /A TAIL=%FL%-1
more +%TAIL% log1.txt >log2.txt

log1.txtの最後の1行の内容をlog2.txtに出力します。
Win2000Proだと問題ないのですが、WinNT4.0Serverだと
「USEBACKQの使い方が誤っています」と表示されます。
こちらもご存じの方いましたら教えてください。

よろしくお願いします。
0602デフォルトの名無しさんNGNG
Q1 exeを実行するにはどう書けばいいですか?
Q2 キーを押す(例えばF1を押したようにしたい)にはどう書けばいいですか? 
0603デフォルトの名無しさんNGNG
標準入力に相当する物が見あたらないのですが、
バッチファイル同士でパイプを使うことはできるんでしょうか?
0604デフォルトの名無しさんNGNG
>>601
NTのヘルプに載ってなければ無理なんじゃないの

>>602
A1. たとえばC:\Windows\Calc.exeと書けば電卓が実行される。
A2. たぶん無理。キーを押すというのはメッセージを送れば実現できるけどそれはC言語とかでプログラムを作るしかない。
WSHではできるのかな?

>>603
普通にできるはずだけど。
0605デフォルトの名無しさんNGNG
>>603
> バッチファイル同士でパイプを使うことはできるんでしょうか?
command /c batch1 | command /c batch2
0606デフォルトの名無しさんNGNG
>>604
やっぱりむりですか・・・
では%1で受けた値の両端のダブルクォーテーションを取るにはどうしたら良いのでしょうか?
0607603NGNG
>>605,604
ありがとうございます。
バッチ同士の部分は分かりました。

(バッチファイルへの引数は%1で受け取れるようなのですが、)
command /c batch1 | command /c batch2
としたときに
batch2側でbatch1の標準出力を受け取るにはどうしたらいいのでしょうか?
(
%??に相当する物が存在せず、
copy [con] , set , 一時ファイル 等を使う方法しかないのでしょうか?
)
0608デフォルトの名無しさんNGNG
>>607
バッチ内でパイプを受け取れるコマンドを使えばいい
0609デフォルトの名無しさんNGNG
凝ったことしたければバッチファイルあきらめてPerlとかCygwinとか使った方がいいよ
0610デフォルトの名無しさんNGNG
>609
ここは、そこを敢えてバッチファイルでやって玉砕するスレではないか。
0611デフォルトの名無しさんNGNG
>>607
forでいけるんじゃない?
テキストファイル読み込んだりとファイル操作できるし。
0612デフォルトの名無しさんNGNG
教えて君でもうしわけないんですが、AドライブのFDからWordを起動する
パスを作りたいのですが、できません。

これじゃーだめみたい。

A:\>a:bas\C:\WINDOWS\APPLIC~1\MICROS~1\INSTAL~1\{00010~1\WORDICON.EXE
0613デフォルトの名無しさんNGNG
実行ファイル名は winword.exe じゃないのかなぁ。
試してないけどこんな感じとか。

"C:\Program Files\Microsoft Office\Offic\winword.exe"
0614612NGNG
A:\>a:bas"C:\Program Files\Microsoft Office\Offic\winword.exe"
コマンドまたはファイル名が違います.

A:\>a:bas\"C:\Program Files\Microsoft Office\Offic\winword.exe
コマンドまたはファイル名が違います.

A:\>"C:\Program Files\Microsoft Office\Offic\winword.exe"
コマンドまたはファイル名が違います.

3パターン試しましたがだめだったよです。(´・ω・`)ショボーン
0615デフォルトの名無しさんNGNG
パス名の途中がOffic になっているんだけどw
0616デフォルトの名無しさんNGNG
> "%ProgramFiles%\Microsoft Office\Office\Winword.exe"
0617612NGNG
>>615
あ・・・・気が付きませんでした。Officeに直したら出来ました。
>>613
どうも有難う御座いました。
0618デフォルトの名無しさんNGNG
>>616
なるほど。その環境変数は知らなかったよ。

ところで(システム|ユーザ)環境変数やらコマンドの動作の違いをOSのバージョンごとに
まとめているサイトとか知りませんが?
0619612NGNG
>>616
すみません。
やってみました。どこがおかしいのでしょう?

A:\>"%ProgramFiles%\Microsoft Office\Office\Winword.exe"
コマンドまたはファイル名が違います.
0620デフォルトの名無しさんNGNG
>>619
OSのバージョンによっては環境変数 ProgramFiles が定義されていないかもしれないね。
set
または
set | find "ProgramFiles"
で ProgramFiles= で始まる行が表示されるかどうか確認してみては?
0621612NGNG
>>620
有難う御座います。
確認してみます。
0622612NGNG
OSはWin98SEです。
ちょっと確認してみました。
こんな感じです。

Microsoft(R) Windows 98
(C)Copyright Microsoft Corp 1981-1999.

C:\WINDOWS>set | find "ProgramFiles"

C:\WINDOWS>set
TMP=c:\windows\TEMP
TEMP=C:\windows\TEMP
PROMPT=$p$g
winbootdir=C:\WINDOWS
COMSPEC=C:\WINDOWS\COMMAND.COM
PATH=C:\WINDOWS;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\PROGRA~1\COMMON~1\AUTODE~1:\D
;C:\JAVA;C:\PROGRA~1\COMMON~1\AUTODE~1:\DOS;C:\APP\JAVA\BIN;C:\JDK1.3\BIN;C:\P
GRA~1\COMMON~1\AUTODE~1
windir=C:\WINDOWS
BLASTER=A220 I5 D1 T4
CMDLINE=find "ProgramFiles"

C:\WINDOWS>

0623デフォルトの名無しさんNGNG
ということで、Win98では %ProgramFiles% は使えないことがわかったですか?
0624612NGNG
>>623
ども、すいません。
0625デフォルトの名無しさんNGNG
関係ないが、612のJava環境のインストール状況が気になる。
0626デフォルトの名無しさんNGNG
> C:\PROGRA~1\COMMON~1\AUTODE~1:\D

AUTODE~1 って AutoCadか?
コロンが含まれているから無効なパスに見えるが。
0627デフォルトの名無しさんNGNG
すいません。Dドライブからのパスです。
うpしたのでこれでいいのか、分かりません。
HPに説明とパスがあります。でも、Dドライブから実行したいので・・・。

ttp://ptba2.hp.infoseek.co.jp/cgi-bin/up/obj/obj2321_1.jpg
0628デフォルトの名無しさんNGNG
…しっちゃかめっちゃかな設定だな…
0629デフォルトの名無しさんNGNG
>>627
「path %path%」の部分が不要

それと>>626の言う通り、
「C:\PROGRA~1\COMMON~1\AUTODE~1:\DOS;」
の部分がおかしい。(「:\DOS」の前にセミコロン;とドライブ名が抜けてる?)

アセンブラやる前にもう少しDOS(コマンドプロンプト)の勉強もした方が
良いんではないかと・・・
0630627NGNG
>>629
ども・・・・。
おっしゃるとおり、DOSの勉強を進めていったほうが良いですね。

>「C:\PROGRA~1\COMMON~1\AUTODE~1:\DOS;」
うーん・・・これは、私にも分かりません。
AuotCAdは、普通にCDからのインストールをしたので
私は、そのような記述をしてません。(それ以前にわからないです。)
AuotCAdは、使ってないからアンインソトールしました。
その記述部分を削ってもいいって事でしょうか?
0631デフォルトの名無しさんNGNG
age
0632m.sNGNG
C言語でソースプログラムをコンパイルするという一連の流れの中でアセンブルの後の「リンク」とはいったい何をしているのか教えてください。できるだけ詳しく。優秀なプログラマーさんお願いします。
0633デフォルトの名無しさんNGNG
スレ違い wdic.orgで調べれ
0634デフォルトの名無しさんNGNG
OSの種類によってバッチ・ファイルの処理を切り替える方法
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/267swchos/swchos.html
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/267swchos/table.html
0635デフォルトの名無しさんNGNG
age
0636デフォルトの名無しさんNGNG
age
0637デフォルトの名無しさんNGNG
急で申しわけないですが、Win98SEにSYMDEBを利用してCOMファイルを作成したい
のですが、手元にある書物がNECの「PC-9801シリーズ」を対象にしてるので
記述どおりの事をやっても出来ません。
私のOSでは無理なんでしょうか?
0638デフォルトの名無しさんNGNG
>>637
どこがどうできないのかくらい書けや
0639デフォルトの名無しさんNGNG
>>630
不要ならその部分を削除しても問題なし。

>>637
スレ違いだ。こっちで聞け↓

機械語なら俺に質問しろ!
http://pc2.2ch.net/test/read.cgi/tech/1035288252/l50

自分の使ってる環境や本の名前をもっと具体的に書かないと
まともに答えてもらえないぞ。
0640デフォルトの名無しさんNGNG
>>634
Win9xはC:ドライブ固定ですかそうですか
0641デフォルトの名無しさんNGNG
>>640
しかも>>634の一覧表のWin98で%comspec%は
C:\WINDOWS\COMMAND.COM

なのに一番下の実例では
@echo off
if "%comspec%"=="" goto unknown
if "%comspec%"=="c:\command.com" goto Win9x
if "%comspec%"=="%systemroot%\system32\cmd.exe" goto WinNT

((((;゚Д゚)))ガクガクブルブル
%WINDIR%\COMMAND.COMにしろよ
0642デフォルトの名無しさんNGNG
以下のファイル(TREG.ini)を編集したり、参照したりするバッチ(TREG.bat)
を作ったのですが、編集処理(ラベル :DEBUG,:HISTORY,:SIZE,:SENDMSG)の
あと、:FIN→:EOFとしているのですが、なぜか:EOF→:FINとgotoされてしま
います。

問題はどこでしょうか??

///TREG.ini
###############################################;
# 定義ファイル #;
###############################################;
HISTORY=10;
SIZE=101376;
DEBUG=on;
SENDMSG=*;
0643treg.bat 1/4NGNG
@echo on
setlocal
set WORKDIR=%~dp0

:****************************************
if /i "%1"=="/?" (goto :INFO
) else if /i "%1"=="/D" (@set PRM1=DEBUG
) else if /i "%1"=="/H" (@set PRM1=HISTORY
) else if /i "%1"=="/S" (@set PRM1=SIZE
) else if /i "%1"=="/M" (@set PRM1=SENDMSG
) else if /i "%1"=="/V" (goto :VIEW
) else (goto :ERORR)

set PRM2=%2%
goto :%PRM1%

:****************************************
:DEBUG
if /i "%PRM2%"=="ON" (call :GET_INI
)else if /i "%PRM2%"=="OFF" (call :GET_INI
)else (goto :ERORR)
:_DEBUG
goto :FIN
0644treg.bat 2/4NGNG
:****************************************
:HISTORY
set /a PRM2=%PRM2%/1
if errorlevel 9163 goto :ERORR
if /i %PRM2% GTR 100 (goto :ERORR
) else if /i %PRM2% LSS 0 (goto :ERORR)
call :GET_INI
:_HISTORY
goto :FIN

:****************************************
:SIZE
set /a BUFFER=%PRM2%/1
if errorlevel 9163 goto :ERORR

if /i %PRM2% GTR 1000 (goto :ERORR
) else if /i %PRM2% LSS 10 (goto :ERORR)
set /a BUFFER=%PRM2%
set /a PRM2=%PRM2%*1024-1024
call :GET_INI
:_SIZE
set /a PRM2=%BUFFER%
ECHO !!
goto :FIN
0645treg.bat 3/4NGNG
:****************************************
:ERORR
echo オプションが不適当です。

:****************************************
:INFO
echo 形式:TREGini [/d {0〜100}] [/h {10〜1000}] [/d {on^|off}] [/m compute名][/?] [/v]
goto :END

:****************************************
:VIEW
type %WORKDIR%TREG.INI
goto :END

:****************************************
:FIN
del %WORKDIR%TREG.BAK
echo %PRM1%=%PRM2% に変更しました。
:END
goto :EOF
0646treg.bat 4/4NGNG
:****************************************
:GET_INI
rename %WORKDIR%TREG.INI TREG.BAK
for /f "tokens=1 delims=;" %%a in (%WORKDIR%TREG.BAK) do (@set LINE=%%a&& call :GET_SUB)
goto :_%PRM1%

:****************************************
:GET_SUB
for /f "eol=# tokens=1,2* delims= " %%c in ('ECHO %LINE%') do (@set HEAD=%%c&& @set VALUE=%%d)
if /i "%HEAD%"=="%PRM1%" set VALUE=%PRM2%
if /i "%HEAD%"=="%PRM1%" set LINE=%HEAD%^=%VALUE%
echo %LINE%; >> %WORKDIR%TREG.INI
set LINE=
set HEAD=
set VALUE=
0647642NGNG
申し送れましたが、Windows2000 Pro SP4 環境です。
0648デフォルトの名無しさんNGNG
>>642
長いんでよく見てないが、:GET_INI の最後は
goto :_%PRM1% → goto :EOF
では?
0649sageNGNG
>>648さん、642です。

:SIZEの処理の場合は、set /a PRM2=%BUFFER%の処理を行うために。
また、:FINで変更が行われたことを表示させることも行うために
goto :_%PRM1%としています。
0650642NGNG
上げてしまった・・・
0651デフォルトの名無しさんNGNG
>>649
call の使い方はちゃんと理解してる?

CALL :ラベル 引数

指定された引数で新しいバッチ ファイル コンテキストが作成され、指定
されたラベルの次の文に制御が渡されます。バッチ スクリプト ファイルの
最後に 2 回到達することによって、2 回 "終了" する必要があります。
1 回目に最後に到達したときには、制御は CALL 文の次の行に返されます。
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 回目に、バッチ スクリプトが終了します。バッチ スクリプトから "戻る"
ための GOTO :EOF 拡張機能の説明については、GOTO /? と入力してください。

@echo off
call :label_c
call :label_b
call :label_a
goto :EOF
:label_a
echo aaa
goto :EOF
:label_b
echo bbb
goto :EOF
:label_c
echo ccc
goto :EOF
0652642&649NGNG
>>651
適切なご指摘ありがとうございます。
肝心なところを理解していませんでした。

以下のように変更し、正常動作を確認しました。
:****************************************
:GET_INI
rename %WORKDIR%TREG.INI TREG.BAK
for /f "tokens=1 delims=;" %%a in (%WORKDIR%TREG.BAK) do (@set LINE=%%a&& call :GET_SUB)
goto :EOF
0653デフォルトの名無しさんNGNG
質問です。
バッチファイル中でスリープってできないんですか?
10秒(厳密でなくても可)だけ待ちたい。

次のようなことを思いついたが、なんかきれいではないような気がして、、、
WSHでスリープしそれをcall
CでもJavaでもスリープするだけのプログラムを作りそれをcall
0654デフォルトの名無しさんNGNG
@echo off
choice /c:x /t:x,10 | echo.

x押されたらどうしょうもないけど ついでにNT系はchoiceなかったっけ
0655デフォルトの名無しさんNGNG
漏れは 某所の deltree.exe と choice.exe をいれているがな。
0656653NGNG
653です。

ありがとうございます。

choiceをそういう目で見れたことはありませんでした。

98SEでは思い通りにいきましたが、やはり2kでは無理でした。
何で同等のコマンドがないんでしょう?
↓ここは確認しましたが、別途ツールでも無理ですね。
ttp://forum.nifty.com/fpcu/dosvcmd/choice.htm
0657デフォルトの名無しさんNGNG
http://www.vector.co.jp/soft/win95/util/se282254.html とか入れればいいだけじゃないのか ?
0658デフォルトの名無しさんNGNG
%time%の秒の部分が10回変化したら
0659653NGNG
レスありがとうございます。

>657
ネイティブのバッチ(用語的に正しい?)以外は環境的に厳しいのです。
本当は詳細な環境要件があるんですけれども省略させてください。
あとプログラマとしての探求的なものもあるんですけどね。

>658
なるほど
作ってみました

@ECHO OFF
SET SS=%TIME:~6,2%
SET MYCNT=0
:LOOP
SET NOW=%TIME:~6,2%
IF %SS%==%NOW% GOTO :NOTCNT
SET /A MYCNT=MYCNT+1
SET SS=%NOW%
GOTO :NOTCNT
:NOTCNT
IF %MYCNT%==10 GOTO :END
GOTO :LOOP
:END

最後のif文の数字で秒数変更できます。引数にしたほうが汎用的ではあります。
何行かスリムにもできますが、ロジック的には以上ということで、、、
0660正直、バッチでビット演算子まで使えるとは知らなかったよ。NGNG
> GOTO :NOTCNT
> :NOTCNT

とか

> IF %MYCNT%==10 GOTO :END
> GOTO :LOOP
> :END

とかわざわざわかりにくく書かなくてもいいと思うぞ。

@ECHO OFF
SET SS=%TIME:~6,2%
SET MYCNT=0
:LOOP
SET NOW=%TIME:~6,2%
IF %SS%==%NOW% GOTO :LOOP
SET /A MYCNT=MYCNT+1
SET SS=%NOW%
IF %MYCNT% LEQ 10 GOTO :LOOP

ぐらいで充分かと。あとお行儀的には、setlocal/endlocal で括るといいかも。
0661デフォルトの名無しさんNGNG
hosyu
0662デフォルトの名無しさんNGNG
すいません。こんなバッチファイルがあったらなーと思う物があります。
ある特定のフォルダにあるファイル郡のなかから*.txtというファイルのみを
同名で保存する。つまり更新日時のみ最新になるという風なバッチファイルは
どのようにすればよいのでしょうか?同名ファイルにリネームすればよいとは
思うのですが、ファイルを検索するのはどのようにすればよいのでしょうか?
(for文?)ご教授お願いします。
0663デフォルトの名無しさんNGNG
質問です
リダイレクトを使ってバッチ処理のログを保存していますが、
普通に command > hoge.txt ってやると画面上には出力されなくなってしまいますよね。
画面上にも出力して、ファイルにも(同時に)保存って出来ます?

ant > build.log & type build.log
ってのもなんだか・・
0664デフォルトの名無しさんNGNG
>> 663
それは無理。バッチ、echo、標準コマンドはstdoutなので
リダイレクトされてしまう。
解決策としてはリダイレクトを使わない方法をとる。
たとえばxtr,sed/awk,tcl/ckのようなスクリプト言語を組み合わせる。
あるいは別の言語で組むのが良いかと。一番簡単なのは
コンソールロギングツール。例をいえばXscriptを
使うことなんだけどAT版は無い。
0665デフォルトの名無しさんNGNG
>> 663
バッチ単体では無理だね。最低でも正規表現ツールやら
Batch Jack,Basic Preprosessor(BPP),BU必携。

 そういうのはバッチではなくawk/perlなどのスクリプト言語で
組んだほうが楽だよ。おそらく、どんどん機能追加していきたくなるからね。

 かくいうオレはバッチでInput Method組んだことがあるが
500行くらいになるとスパゲッティになってメンテできなくなる。
いくら変数を構造体変数風(e.g. set global.line.editmode)に
してもBATCPのongoto〜return使おうがbppで分割しようが状況は改善しない。

って今、そいつを他の言語で移植すべく分析で苦労している。
ああ。バッチでOO使える方法(海外サイトを検索してみよう)はあるんだが
さすがにソース分割や構造化プログラミングを組み合わせると
もはやバッチとはいえなくなってしまう。長いので以下略。
0666デフォルトの名無しさんNGNG
>>663
標準出力をファイルに保存するだけなら tee を使うと簡単
dir | tee -a hoge.log

http://www.vector.co.jp/soft/winnt/util/se014671.html
http://www.vector.co.jp/soft/dl/win95/util/se033318.html
0667デフォルトの名無しさんNGNG
↑ダミアソ
0668663NGNG
やはり駄目ですか・・・
dir > con > hoge.txt
con < dir > hoge.txt
とか色々やってしまった。ハズカシイ

>>666
tee イイ!
こーゆー事がしたかったんです!thx!
0669デフォルトの名無しさんNGNG
DISP.DATってファイルはWin98SEでは、作れないのでしょうか?
この人のHPにはそれらしき事が書いてあるのですが。
ttp://homepage1.nifty.com/NAKAYA/20030623.htm
0670デフォルトの名無しさんNGNG
>>669
内容全然読んでないけど、「DISP.DATとういうファイルを作ります」なんて全角で書いてる時点で、俺なら信用しない。
0671699NGNG
>>670
えーっと・・
申し訳ありません。「DISP.DAT」ですか?
そこまで気が付きませんでした。
ちょっとそのHPのソースをCでコンパイルしたらエラーになりました。





0672699NGNG
{
for (i=1;i<=NF;i++){
if ($i=="全<長さ"){
len=$(i+2);
writeSw=1;
}
if ($i=="[ネット名") net=$(i+1);
sub("]","",net);
if (sub("+","",net)==1) net=net "+";
if (sub("/","",net)==1) net=net "/";
}
if (writeSw==1) print net " , " len > "temp.000";
writeSw=0;
}
END{
system ("ssort < temp.000 > netlen.csv");
}
0673699NGNG
E:\c\Bin>bcc32 dos1.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
dos1.c:
エラー E2040 dos1.c 1: 宣言が正しく終了していない
エラー E2206 dos1.c 3: 不正な文字 '$' (0x24)
エラー E2206 dos1.c 4: 不正な文字 '$' (0x24)
エラー E2206 dos1.c 7: 不正な文字 '$' (0x24)
エラー E2206 dos1.c 7: 不正な文字 '$' (0x24)
*** 5 errors in Compile ***

E:\c\Bin>
0674デフォルトの名無しさんNGNG
>>671
HPの中身読んでないだろ…
DISP.DATはDREAMCADっていうソフトで作成するんだろ?
しかも、そのスクリプトってDISP.DATに全然関係なくて、
Cじゃなくてawkのスクリプトなんだが…

もしかして、俺釣られてる?
0675699NGNG
>>674
すみませんでした。
違うスレに逝ってきます。
0676デフォルトの名無しさんNGNG
一体どのスレでどんな風に質問する気なのか、非常に気になる。
0677699NGNG
やっぱりこの質問は、2ちゃんでは止めときます。
さよなら〜〜〜〜〜〜〜〜
0678デフォルトの名無しさんNGNG
Windows98 上で動かすバッチファイルで SET コマンドを使ったとき、
イコール記号を含む文字列を変数に入れようとすると、「構文が違います」と言われてしまいます。
イコールを含むようなものは代入できないのでしょうか。

例 SET HOGE="ABC=DEF"
0679デフォルトの名無しさんNGNG
>> 678
 対策としてBU使ったらどうかな?
上は構文エラーになる。=はどこがトークンか判断できないからね。
ちなみに""で括っても意味はないよ。
バッチでは変数はすべて文字列で評価されるからね。
0680デフォルトの名無しさんNGNG
>>662
touchでも使え。
0681デフォルトの名無しさんNGNG
バッチ・ファイル中で日付をファイル名に使用する
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
0682682NGNG
このバッチファイルのどこがおかしいか教えてください。

REM カレントディレクトリにある拡張子がTXTのファイルをフロッピーにコピーするバッチファイル
@ECHO OFF COPY *.TXT A:\ >NUL

実行した結果ですが、MS-DOS アプリケーションへのショートカット(me)
が出来てるだけ・・・・。
C:\My Documents>me

C:\My Documents>REM カレントディレクトリにある拡張子がTXTのファイルをフロッピー
にコピーするバッチファイル


C:\My Documents>
0683デフォルトの名無しさんNGNG
echoとcopyを別の行に分けたら
0684デフォルトの名無しさんNGNG
>> 682
 ついでにremの位置も間違えていますよ。
@echo off(DOS3ではecho off)はバッチファイルの一行目が定石です。
文字列表示したいならechoを使いましょう。
echo.で空白行にもなります。

なお、remはラベルで代用して使うこともできます。
そのさい、既存のラベル(gotoで使用するもの)と
衝突しないように注意してください。

e.g.)
:: これはコメントですよ。

その他、goto〜:labelの空白行をコメント領域として使うことができます。
BatchJack使えばコメントをC++風に置けるんですが
Preprocessor使うのは面倒ですよね。

e.g.)
goto label

コメント・・・いや、その件は
:label

最後にプログラミングのドツボはつまらないコーディングミスが大半です。
詰まったら、しばらく忘れて他のことでもしましょう。
0685デフォルトの名無しさんNGNG
バッチファイルで 「キーを押すとそのアスキーコードを表示するプログラム」 できまつか?
よろしくおながいしまつ。
0686デフォルトの名無しさんNGNG
>> 685
 ScanCode? 可能だよ。xtrかBUを使いましょう。
ただし、AT互換機の場合は特殊キーは2バイトキーコードなので
1バイト目がNULL(0)であれば2バイト目を読む必要がある。

例)BUによるGetchの例
(xtrの場合はコード変換が入るが、基本は同じ。
面倒ならTurbo C2.0のgetch関数を使って作成...
変数ふたつと条件分岐だけで作成可能)

@echo off
bu -e -nBYTE1 keycode
if "%BYTE1%"=="0" bu -e -nBYTE2 keycode
bu echo %BYTE1%
if not "%BYTE2%"=="" bu echo %BYTE2%
echo\
set BYTE1=
set BYTE2=

それとScanCode表はWindows9x付属の文字コード表を参考にしましょう。
(まあ、!〜~の範囲をデシマルで出力すればいいんだけどね)
0687682NGNG
>>683-684
有難う御座います。
ちょっと、訂正して実行しました。

@ECHO OFF カレントディレクトリにある拡張子がTXTのファイルをフロッピーにコピーするバッチファイル
REM
COPY *.TXT A:\ >NUL


C:\My Documents>REM

C:\My Documents> COPY *.TXT A:\ >NUL

準備ができていません. 読み取り中 ドライブ A:
中止 (A), 再試行 (R), 失敗 (F)?r

C:\My Documents>
C:\My Documents>

これが参考にしてる結果です。
同じですか?

REM 処理確認してコピーする ECHO このディレクトリの中にあるTXTファイルをフロッピーにコピーします。
ECHO ディスクをドライブにセットしてからどれかキーを押してください。
PAUSE >NUL
COPY *.TXT A:\
0688685NGNG
>686
tan x.
MS-DOS附属の BATKEY.COM しかないんでつが...
0689reboot.asmNGNG
>204
CODE segment
assume cs:CODE, ds:CODE
org 100h
START: mov ah,4ch ; B4 4C ;エL
int 21h ; CD 21 ;ヘ!
CODE ends
end START

errorlevel をリセットするコマンド?
0690デフォルトの名無しさんNGNG
1. ftpでデータを取得するバッチファイルを動的に作成(temp.bat)
2. shellでtemp.batを起動。(プロセスIDをとって、終了まで待機)
3. 数分おきに繰り返す。

というようなプログラムを作ってます。
ところがまれにcmd.exeが終了せずに処理が止まってしまいます。

そこで、途中で止まっているtemp.batを
強制終了させたいのですが、どうすればよいのでしょう?

calc.exeを起動して、終了させるサンプルプログラムを
使ってもうまくいきません。
(calc.exeのかわりにtemp.batを起動・終了させようとしても
起動するだけで終了しません)


「ftp」とだけ記述されたバッチファイルを
起動・終了させる例を示していただけると助かります。

0691690NGNG
↑ソフト本体はvb6でつくってます。
ここに書き込むのが適当なのか分かりませんが、
よろしくお願いします。
0692デフォルトの名無しさんNGNG
690 スレ違い|マルチ
氏ね
0693690NGNG
デフォルトの名無し様

すみませんでした。失礼します。
0694686NGNG
>688
 すみません。リンク提示をしていませんでした。
その他便利なツール紹介も含めて提示します。

- BU / BATCP (バッチで使えば便利なツール)
ttp://hp.vector.co.jp/authors/VA000007/

- BPP (Basic用のプリプロセッサ。モジュール単位での分割などができます。
バッチでも使えます)
ttp://www.noktosoft.com/

- BJ (バッチで構造化プログラミング。でも生成ソースに難がある)
ttp://www.vector.co.jp/soft/dos/util/se000464.html

- xtr (文章整形ツール。未完成で終ってしまって悲しい)
ttp://www.asahi-net.or.jp/~fe3s-mrkm/blind/xtr.htm

- BAT→C/C++トランスレーター
ttp://www.spacesoft.co.jp/

- Turbo C(参考資料)
ttp://hp.vector.co.jp/authors/VA003720/lpproj/special/borland/
0695684NGNG
>> 687
 ECHOの文末を改行(端末設定がおかしいのかな?)していない以外は、
それで大丈夫です。

可能であればエラー処理を入れておいたほうがいいです。
ただ、それをやろうとするとほかのツールを使う必要があります。
今は、まだいいかと存じます。

一応、バッチファイル関連のサイトを提示しておきます。
ttp://www25.cds.ne.jp/~kamiken/bach/bach.html
0696デフォルトの名無しさんNGNG
>690
ぉぃぉぃ。この程度でVB使うなんてへっぽこ趣味PGの
オレですら考えられないんだが。
どんなプログラム書いているんだかと小一時間問い冷たく(snip)
ってか、ここで質問するならBSLかWinbatchEh関連で質問したほうがいいかと。
一応バッチ系統の言語なんだからさ。

BSL
ttp://hp.vector.co.jp/authors/VA013722/
0697682NGNG
>>695
丁重なアドバイス、有難う御座います。
もうちょっと、学習してみます。
0698685,688NGNG
>>694
丁重なアドバイス、有難う御座います。。。
もうちょっと、学習してみます。。。
0699デフォルトの名無しさんNGNG
バッチファイルで 「errorlevelを10進表示するプログラム」 できまつか?
よろしくおながいしまつ。
0700デフォルトの名無しさんNGNG
echo %errorlevel%って10進じゃないの?
0701デフォルトの名無しさんNGNG
10進だな。

Win32ではリターンコードも32bitなんだな。知らんかった。
0702デフォルトの名無しさんNGNG
>700
ECHO は ON
0703デフォルトの名無しさんNGNG
>699
↓にあるよ。
自分で作ったプログラムを公開するスレ
http://pc5.2ch.net/test/read.cgi/tech/1076238917/41-42
0704682NGNG
>>695さん
そのHPの文字に色をつけるバッチファイルですが、

@echo off
@echo off [30mY [1;30mY [0m
@echo off [31mY [1;31mY [0m
@echo off [32mY [1;32mY [0m
@echo off [33mY [1;33mY [0m
@echo off [34mY [1;34mY [0m
@echo off [35mY [1;35mY [0m
@echo off [36mY [1;36mY [0m
@echo off [37mY [1;37mY [0m
echo.
@echo off [40mY [0m
@echo off [41mY [0m
@echo off [42mY [0m
@echo off [43mY [0m
@echo off [44mY [0m
@echo off [45mY [0m
@echo off [46mY [0m
@echo off [47mY [0m
0705682NGNG
結果です。
A:\>
OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF

OFF
OFF
OFF
OFF
OFF
OFF
OFF
OFF


A:\>
0706682NGNG
同じになりません。
OSは、Win98SEです。
98じゃないからですか?
0707デフォルトの名無しさんNGNG
いや、「結果です」と言われても…
0708デフォルトの名無しさんNGNG
>>704
バイナリエディタで[の前が1Bになっているのを確認したか?
@echo offは文頭に1つでいいだろ
>>705
もしかしてコピペの仕方知らないの
0709デフォルトの名無しさんNGNG
>>706
使えると思うが、DOS/Vのファイル参照。
ttp://www.mirai.ne.jp/~nave/lib/echo.htm
0710デフォルトの名無しさんNGNG
http://tv.yahoo.co.jp/vhf/tokyo/2004050423.html
をブラウザで開くバッチファイルってどう書けばいいんですか?
後ろの数字は年月日時で変わってきます。
0711デフォルトの名無しさんNGNG
>>710
%date%を使う
0712デフォルトの名無しさんNGNG
質問です
指定した複数のファイルやフォルダの容量を調べて
まとめた容量を表示するにはどうすればいいのでしょうか?
0713デフォルトの名無しさんNGNG
>>712
for /?

%~zI - %I ファイルのサイズに展開します。

あとは足すだけ。
0714デフォルトの名無しさんNGNG
おまけ
set /?

SET コマンドには、2 つの新しいスイッチが追加されています:

SET /A 式
SET /P 変数=[プロンプト文字列]

/A スイッチは、等号の右側の文字列が、評価すべき数式であることを
指定します。式の評価はごく単純で、次の操作がサポートされます。
操作は、優先順位の高い順に示されています:

() - グループ化
* / % - 算術演算子
+ - - 算術演算子
<< >> - 論理シフト
& - ビット演算子 AND
^ - ビット演算子排他的 OR
| - ビット演算子 OR
= *= /= %= += -= - 代入
&= ^= |= <<= >>=
, - 式の区切り記号
0715デフォルトの名無しさんNGNG
>>714
cmd必死だなw
0716デフォルトの名無しさんNGNG
set で定義した変数は環境変数に追加されるんですか?ヘルプみてもわからなかったんで。スマソ。
0717教えてくださいNGNG
バッチファイルでバッチファイルを呼び出すと
一つ目しか実行しません。
なんとかならないものでしょうか。
0718デフォルトの名無しさんNGNG
call YourBatch.bat
0719デフォルトの名無しさんNGNG
>>716
SETは「環境変数を設定するコマンド」なんだが・・・。
ただしNT系の場合、SETを使ったコンソールの中でのみ有効。
9x系の場合は忘れた。

>>717
意味がよく分からんがとりあえず CALLを使え。
0720デフォルトの名無しさんNGNG
>>718 >>719
ありが�d。
これから試してみますね。
0721デフォルトの名無しさんNGNG
カレントディレクトリの9152バイトのファイルだけを削除するのってどうやるの?
0722でけたNGNG
@echo off

rem メガネ男を削除する

setlocal

set nydir=C:\bin\winny2b71

:loop

cd %nydir%\down
for %%f in (*) do (
if "%%~zf"=="9152" (
echo deleting... %%~zf %%f
del "%%f"
)
)

cd %nydir%\cache
for %%f in (*) do (
if "%%~zf"=="9489" (
echo deleting... %%~zf %%f
del "%%f"
)
)

rem もしcygwinが入っているなら
sleep 6 && goto loop
0723デフォルトの名無しさん NGNG
バッチファイルに

start http://www.asahi.com/
start http://www.yomiuri.co.jp/

って書くと、当然ですが一つのブラウザが開いて読売のWebが
表示されておしまいです。そうではなくて、ブラウザが2つ
起動し、それぞれ朝日、読売とWebが表示できるようにしたい
のですが、DOSのコマンドじゃ無理でしょうか?なにか上手い
方法ありませんか?
0724デフォルトの名無しさんNGNG
start explorer http://www.asahi.com/
start explorer http://www.yomiuri.co.jp/
0725デフォルトの名無しさんNGNG
すいません
バッチファイル押下時に
ファイルに現在の時刻を出力するにはどうすればいいのでしょうか?

またWindowsのシャットダウン時にその時間を出力させることは可能でしょうか?
0726デフォルトの名無しさんNGNG
723です。724さん、すみません。
ブラウザの種類を書き忘れました。デフォルトでNetscape Communicator 4.75以上を
使っている場合の話なんです。この場合はどのようにすればよいのでしょう。
IEは対象外としてます。
0727デフォルトの名無しさんNGNG
>725
date /T > aho.txt
time /T >> aho.txt
shutdown

って書けばいいんでは?
0728デフォルトの名無しさんNGNG
指定されたフォルダの中の指定の容量以下のものを削除したいとき
また指定されたフォルダの指定の拡張子を削除させるには
それぞれどうすればいいのでしょうか
0729デフォルトの名無しさんNGNG
バッチファイルで各プロセスのアクティブなサービスを表示させたいのですがうまくいかないので教えて下さい。OSは2000です。
0730デフォルトの名無しさんNGNG
すいません簡単な質問ですが
教えてください
ファイルに書き込む時改行しないで続けて横に書き込みたいときどうすればいいのでしょうか?
たとえば
@echo off
echo あいうえお
echo かきくけこ

こう書けば改行されますが
これを
あいうえお かきくけこ

みたいにしたいのです
教えてください
0731デフォルトの名無しさんNGNG
改行なしのechoなどない
変数にどんどん足していって一度にechoとかやるしかない
0732デフォルトの名無しさんNGNG
>>728
>指定されたフォルダの中の指定の容量以下のものを削除したいとき
>また指定されたフォルダの指定の拡張子を削除させるには

両方いっぺんに指定できるバッチ例 for 2000/XP(未検証スマソ)

REM delfile.bat 指定フォルダ 指定ファイルサイズ [拡張子]
@echo off
set dir=.
set size=0
set ext=*

if not "%1"=="" set dir=%1
if not "%2"=="" set size=%2
if not "%3"=="" set ext=%3

for %%F in ( %dir%\*.%ext% ) do (
if %%~zF LEQ %size% del %%F
)

>指定されたフォルダの指定の拡張子を削除させるには
これだけなら、指定されたフォルダ(=c:\test) 指定の拡張子(txt)として
del c:\test\*.txt
で済む罠。
0733デフォルトの名無しさんNGNG
>> 719
追記しておくと、callつかわなくてもできるけど面倒だな。
ちなみにDOS3以下ではcommand /c [batch.bat]でできるが
子プロセス側の環境変数は親プロセスに継承されない。

>> 730
 C言語であればprintfでできます。
バッチの場合はBU[>>694]を入手してprintfでやりましょう。

>>731さんの方法では、環境変数領域が不足することが考えられますので
お勧めしません。ただし。表示個数が少ない、環境変数領域を多めに
指定している場合は除きます。
0734デフォルトの名無しさんNGNG
BU入れるならWSHかCygwinのコマンド郡使ったほうがいいだろ。
0735デフォルトの名無しさんNGNG
バッチでコピー処理をしたいとき
ディレクトリ/ファイルの選択をしないようにするにはどうすればいいのでしょうか?

たとえば
xcopy "C:\test\test1\testfolda" "D:\test\test1\testfolda /s
とあるとき
それがファイルかディレクトリかをいちいち聞いてくるのですが
これを聞かれずに全部ディレクトリで流したいときどうすればいいのでしょうか?

0736デフォルトの名無しさんNGNG
>>735
xcopy /?
0737デフォルトの名無しさんNGNG
>>735
xcopy /i
0738デフォルトの名無しさんNGNG
よぉぉぉぉおおおおおおおおおおおおおおおおおし2げとずさー
記念age
0739デフォルトの名無しさんNGNG
【質問】バッチでchdirやpathコマンドを使用しても、バッチが終了すると元に戻ってしまいます。どうすればいいんでしょうか?WinXPのDOS窓でやってます。神様ご教授を
0740デフォルトの名無しさんNGNG
>>739
まさか、Explorerから起動してないよね?
cmd.exe / command.comからではないと無理だよ。
0741デフォルトの名無しさんNGNG
>> 739
 おおまじぼけしてしまった。
えっと、無理なので。どうしてもやりたければstartコマンド
使ってください。CDはどうにかなるでしょう。
pathの変更はコマンドライン終了したら保持されません。

名前を指定して実行でパス入れるとフォルダ開けますね。
0742デフォルトの名無しさんNGNG
>>739
MS-DOSの学習部屋
http://forum.nifty.com/from40pc/mit/command000.htm
0743デフォルトの名無しさんNGNG
ありがとうございます739です。
【名前を指定して実行】でcommand.comを実行してDOS窓開いています。
あるコマンドラインツール(コンパイラです)を使うために、ルートから、
あるディレクトリに移行し、pathも追加したいのです。これをバッチでやり
たいのです。毎回コマンドラインでやるのはあまりに大変ですので。
よってcdもpathも、command.com終わらない限り保持したいのですが無理でしょうか>
0744デフォルトの名無しさんNGNG
739です。
742様ありがとうございました。【アクセサリ→コマンドプロンプト】でDOS窓を開いた場合は保持できました。

0745デフォルトの名無しさんNGNG
コマンド実行してその標準出力を環境変数にセットしたりコマンドラインの引数に渡したりすることはできますか?
shとかの
prog `cat text.txt`
のようなことをやりたいです。
0746デフォルトの名無しさんNGNG
>>745
command /? 嫁
0747デフォルトの名無しさんNGNG
>>2
バッタだよ とツッコミをいれてほしかったのか?
0748デフォルトの名無しさんNGNG
>> 743
pathはテキストファイルに保存することができます。
開始・終了用のバッチファイルを作成してやればいいわけで。

[aexit.bat]
@echo off
path>C:\restpath.bat
exit

[aresume.bat]
if exist C:\restpath.bat call C:\restpath.bat

あとはcommand.comに対して右クリック>プロパティ>プログラム
>バッチファイルにaresume.batを実行するようにすればpathが保存されます。
終了はaexitから行ってください。

問題のほうcdなんですが、御所望のツールは知りません。
ディレクトリ(フォルダ)の移動をファイルに保存して
おくようなツールを作ればないこともないのですが・・・。

欲しいのでしたらパブリックドメインで作ります。
著作権主張するようなものではないですからね。
0749デフォルトの名無しさんNGNG
>>745を分かる方いませんか?
0750デフォルトの名無しさんNGNG
>>749
for /F "usebackq tokens=*" %i in (`cat text.txt`) do @prog %i

とか。 ただし、出力が複数行にわたる場合は結合されずに
1行ごとにprogが実行されるので注意が必要。
0751デフォルトの名無しさんNGNG
■自分自身を再起動する裏技
@echo off
rem 自分自身の:mainを呼び出す。
rem リダイレクトしたり最後にpauseしたりいろいろ。
call :main %0 > C:\log.txt
pause
echo done
exit

:main
echo hello

■pauseのメッセージを変更する裏技
echo 終了します && pause>NUL
0752デフォルトの名無しさんNGNG
>>751
裏技・・・かぁ。。。PC-98全盛期には普通に使われていたのだが。。。

アプリの起動バッチの最後に特定のバッチファイルの起動を記述して
おいて、アプリの中でそのバッチファイルを生成してから終了すれば
メモリ常駐0のランチャになるとか。
0753デフォルトの名無しさんNGNG
WindowsXP標準でコマンドラインで
指定したディレクトリ以下のファイルをzipに圧縮するのってどうやるの?
cabarcの.zip版みたいなの。
0754デフォルトの名無しさんNGNG
command.com の echo で
> とか < を表示するにはどうしたらいいですか?
普通にやるとファイルへリダイレクトしてしまいます。
0755デフォルトの名無しさんNGNG
echo コマンドでパイプ (|) またはリダイレクト文字 (< または >) を表示するには、パイプまたはリダイレクト文字の直前にキャレットを付けます (^>、^<、^| )。キャレット文字そのものを使う必要がある場合は、キャレット文字を 2 つ入力します (^^)。
0756754NGNG
あっ、 command.com は windows me の command.com です。
0757デフォルトの名無しさんNGNG
>>754
>>195-198
0758デフォルトの名無しさんNGNG
>>196
echo"hoge@"
で一旦BATファイルを作った後、バイナリエディタで40(@)を00へ書き換えると
hogeだけが表示されるっていうのをどこかで見た。
0759デフォルトの名無しさんNGNG
突然ですが、WindowsNTで SET /Pのようなコマンドってないか知ってる方
いますか?
0760デフォルトの名無しさんNGNG
759より
誰か。。。知ってる方いませんでしょうか?
朝までに何とかしないと。。。(涙)
0761デフォルトの名無しさんNGNG
>>760
応急処置でよければ、コントロールパネル>システム>環境変数があるんでそこに突っ込みたい定義いれてなんかのボタンを押せば
環境変数をスキに追加できたような。
BATファイルでやっても、窓閉じたら消えちゃうからね。

動的になんかやりたいなら他の人たのむ。
0762デフォルトの名無しさんNGNG
バッチ処理などで、あるジョブが失敗したら
このルートでジョブを流すなど設定できる
ジョブ管理ソフトって無いでしょうか?
マイクロソフト製品限定で。
よろしくお願いします。
0763デフォルトの名無しさんNGNG
>>762
マイクロソフトに訊け。
0764デフォルトの名無しさんNGNG
任意のファイルを任意の回数コピーするバッチを作りたいです。
たとえば hoge.bat in.txt 5 >out.txt を実行すると
copy in.txt+in.txt+in.txt+in.txt+in.txt >out.txt と同様の結果になる。
0765デフォルトの名無しさんNGNG
callってどうやっても機能そのままで省略できないの?
foo.exeをラップしてfoo.batをバッチであることを意識しないで呼び出したいんだけど。
0766デフォルトの名無しさんNGNG
0767デフォルトの名無しさんNGNG
NTサーバのログオンバッチで,クライアントのファイル(例:C:\test\foge.ini)内の3行目(例:text=20)をtext=020(頭にゼロを入れる)と置換したいのですが,何か方法がありますでしょうか?
0768デフォルトの名無しさんNGNG
for使ってファイルを読んで、setで置換でいけるんじゃない?
0769デフォルトの名無しさんNGNG
済みませんが,具体的にお教え願います。
ファイルを読み込むということをしたことが無いので。
コピーならあるんですが。。。
0770デフォルトの名無しさんNGNG
>>139
0771デフォルトの名無しさんNGNG
>>769
「スタート」→「ヘルプ」→「キーワード」→for

「コマンドプロンプト」→for /?
0772名無しさん@そうだ選挙に行こうNGNG
バッチを実行すると現在の日次(yyyymmddhh24miss形式)でファイルを作成したいのですが
こういう事って可能でしょうか?
教えてください。
0773名無しさん@そうだ選挙に行こうNGNG
日付をファイル名に含める

set fdate=%date:~0,4%%date:~5,2%%date:~8,2%
set ftime=%time%
if not "%ftime:~0,1%"==" " set ftime=%ftime:~0,2%%ftime:~3,2%%ftime:~6,2%
if "%ftime:~0,1%"==" " set ftime=0%ftime:~1,1%%ftime:~3,2%%ftime:~6,2%

echo %fdate% - %ftime%
0774名無しさん@そうだ選挙に行こうNGNG
>>773
ありがとうございました。

でもそんなに難しいのですね(T-T)
0775名無しさん@そうだ選挙に行こうNGNG
最近の人は BATCP や BU を知らんのかのぉ。

0776名無しさん@そうだ選挙に行こうNGNG
拾い食いは飼い主様に禁じられているので
0777デフォルトの名無しさんNGNG
実行すると、現在日時でファイルが作成されるというもの。
作成されるファイルは、とりあえずテキストファイルで構いません。
0778デフォルトの名無しさんNGNG
.batファイルと.cmdファイルの違いはなんですか?
0779デフォルトの名無しさんNGNG
.batはシェルがcommand.comだった時代に出来たもの。

.cmdはMSとIBMが仲がよかった時代OS/2 Ver1.xのシェルであるcmd.exe
のために生まれそのままWinNTに引き継がれたもの。
0780デフォルトの名無しさんNGNG
で、.batファイルと.cmdファイルの違いはなんですか?
0781デフォルトの名無しさんNGNG
拡張子が違う
0782デフォルトの名無しさんNGNG
cmdはNTだけ。NT限定バッチならこっちにするのが吉かも
0783デフォルトの名無しさんNGNG
すみません、Windowsスレから誘導されてきました。
cmd.exe上で標準出力を環境変数に代入する方法って何かありますでしょうか?
あるいは、cmd.exe上でbu.comが動かないのですが、cmd上で動くバージョンとかあるのでしょうか?
0784デフォルトの名無しさんNGNG
DIRENT=`dir`
0785デフォルトの名無しさんNGNG
Win2000でパスの設定をするバッチファイルを作ったのだけど、
コマンドプロンプトから実行するとちゃんと設定されるのに、
ファイルをダブルクリックだとなぜか設定できません。
(echo,pause等は動いてるので、中身の実行自体は
されているようです)

何か特別な事しないとダメですか?
0786デフォルトの名無しさんNGNG
>>785
たぶんその設定は一時的なものでダブルクリックしたときのコンソールウィンドウが閉じた時点で設定が破棄されているんじゃないのか?
0787デフォルトの名無しさんNGNG
>>786
うーん確かにそんな気もします。
バッチファイルで恒久的にパス設定する方法ってあるのでしょうか?

PCが苦手な多数の人たちの使うPCで、パスを設定しないとまずいので、
できるだけ操作する人に簡単な方法で設定できるようにしたいのです。
0788783NGNG
>>787
>バッチファイルで恒久的にパス設定する方法ってあるのでしょうか?
autoexec.batに書いとけばいいですよ。

私の質問の答えもお願い。>>784は私に?

0789デフォルトの名無しさんNGNG
Windows2000上でAUTOEXEC.BATって使用できるの?
自分は以下の.regファイルを作成し、実行してレジストリを直接書き換えてる。
バッチファイルでの解決方法でなくてスマン。

【ユーザ環境変数設定.reg】
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"環境変数名"="値"


【システム環境変数設定.reg】
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"環境変数名"="値"
0790デフォルトの名無しさんNGNG
>>787
一度設定すりゃズっと覚えてるから>789の方法でいいと思うんだが
どうしてもバッチファイルでやりたきゃリソースキットのsetxとか試してみ。
ttp://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/setx-o.asp

DOSの時代にもあったねぇ。こんなの。
0791秀博NGNG
     ,.r<弌ヾヾヾヾヾヾ`ト`、-、__
    /-ニニヘヾヾヾヾヾヾヾヾヾヾ`ー-、
   ./ー二�e `゙ `゙ ゙`ヾヾヾヾヾヾヾヾ、シナヘ
  仁一彡       ゙、ヾ、ヾヾ ゙ヘイ〃メ入
  f‐ニ=ツ ,.'   - 、 __        チ彡ニ┤
  !彡ニヽ   ` ー -- 二 _ー_--    三ニ-}
  V;〃ラ  /〃ニー        ̄   メ二ーヲ
  ハテj   ,. ニ、  、    、tヘヾi、 ヾミニソ
  .l. レ   < (・) > .;  .;:'  ,.= 、   lミ,‐ヲ
  ! l   、  ̄  ,! .i  < (・) >   レ' ノ
  l ト 、  ` '"´ ,!  l  、  ̄ ,   : ,j
  `1゙ヽ      ,!  l   ` ´  ,.イ ,/
   l ';  ,.:' (´,、 ,. ヽヾ    ,.:' /`     
   .| ; ,:'   `   ´ ′ヽ  ,.' /     
     ! ; ,.'  _,,,_ __    ;  ;' /
    ',  ゙、"ー-ニニニ=ヽ  ,.' /
    ヽヾ `ー--'''ー-一''′ /
     `ヽ、    、 _ノ/
        ` ー--一''''"´
94年に仙台の緑ヶ丘に住んでいる
わしの妹のところに無言電話をかけてきたやつは許さん
電話会社に通信傍受させるぞ
0792783NGNG
>>789
Windows2000にautoexec.bat作って
path=
でpathを追加してます。
もちろん、cmd.exeを開けば、pathをいつでも覚えていますよ。

レジストリでパス設定できるんですね、全然わからんけど・・・・・

0793デフォルトの名無しさんNGNG
ログファイルAの最後の行とログファイルBの最初の行の比較を行いたいんですが
それぞれ抽出可能でしょうか?
0794デフォルトの名無しさんNGNG
>>793
for /f "delims=" %%a in (A.log) do @echo %%a >aaa
for /f "delims=" %%z in (B.log) do @echo %%z>zzz & goto fc
:fc
fc aaa zzz
0795793NGNG
回答ありがとうございました。
ただこの処理では得たい結果が得られませんでした。
したい処理は、
log1.csv の最終行の第一トークンの取得 
set old_no=結果
log2.csv の最初の行の第一トークンの取得
set newno=結果
set /a new_no=%newno%-1
if %old_no%==%new_no% goto end_step
goto chk_err

こんな感じでログがきちんと連番で取れているかの確認が行いたいです。
よろしくお願いします。
0796デフォルトの名無しさんNGNG
>>795
@echo off
for /f "delims=," %%a in (log1.csv) do set old_no=%%a
for /f "delims=," %%a in (log2.csv) do set new_no=%%a&goto fc
:fc
set /a new_no = new_no - 1
echo %old_no%==%new_no%
0797793NGNG
>>796
納得です、for文のdo コマンド部分で&を用いて1回目の処理で抜けるわけですね。
最終行のデータはやはりこのかたちになりますか。

データが多いとき処理時間が気になりますがバッチの限界ですかね。

ともあれ助かりました。
0798デフォルトの名無しさんNGNG
お聞きしたいのですが、

echo 処理選択メニュー
echo 1.在庫データ取得
echo 2.出庫データ取得
echo 3.入庫データ取得

と、表示して処理を選択したいのですが、どうすれば良いでしょうか
教えてください、Win2000です。
0799デフォルトの名無しさんNGNG
>>798
choice /?
0800デフォルトの名無しさんNGNG
>>798
set/pとifを使う
0801デフォルトの名無しさんNGNG
ファイルを削除するバッチを作っています。
DELコマンドで削除するのですが、エラーレベルが取れないようです。
共有違反など、削除に失敗したときのステータスを返したいのですが、
なにか良い方法はありますでしょうか?
よろしくお願いします。
0802デフォルトの名無しさんNGNG
>>801
今どうやってやって取れないのかちゃんと書けよ。
0803デフォルトの名無しさんNGNG
>>764
まだ未解決か?ってか、一月半も前なら出来てると思うが。

[使い方]
hoge.bat in.txt 5 out.txt

[hoge.bat]
FOR /L %%i IN (1,1,%2) DO type %1 >NUL >> %3

これでできると思うぞ。「>」は無いけどな。
type使うのが味噌かな(笑)
0804デフォルトの名無しさんNGNG
>>801
del foo.txt || goto :error
0805デフォルトの名無しさんNGNG
>>803
out.txt が初めから存在したときの結果が >>764 と異なるから、
バッチファイルの初めに del %3 を入れといた方がいいと思う。
0806デフォルトの名無しさんNGNG
>>805
確かに。
'>>'は追加書き込みのことだから。
その方がいいですね。
0807デフォルトの名無しさんNGNG
バッチファイル実行するたびに処理を変えたいんだけど
# とあるレジストリのONとOFF
どうやってやればいいの?
0808デフォルトの名無しさんNGNG
>>807
EXIST と RENAME 使え
ex.ON.txt
0809デフォルトの名無しさんNGNG
>>764
IF EXIST out.txt 〜
で、処理を打ち切るかどうかもその人の考えるところかな。
0810810NGNG
あるテキストの内容を
「全選択」→「コピー」→「メーラー自動起動」→「新規メールにペースト」
って感じの流れをbatとかで書けないものでしょうか?

テキストオープン
Ctrl+A
Ctrl+C
メーラー自動起動(ちなみにOutlookExpress)
Alt+F
Alt+N
Alt+M
Tab*3
Ctrl+V

みなたいな感じなんですが。
宛先も自動選択とかできたらなお嬉しいかも。
何とか可能にできないものでしょうか?
0811デフォルトの名無しさんNGNG
>>810
wshでSendKey使っとけ
バッチファイルじゃ無理
0812デフォルトの名無しさんNGNG
>>810
スレ違いだけどvbsならこんな感じ

set ws = WScript.CreateObject("WScript.Shell")
ws.Run "C:\WINDOWS\hh.exe C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1041\msdnvs98.col", 1, False
WScript.Sleep 1000 ' 起動待ち
ws.SendKeys "%n"
'WScript.Sleep 100
ws.SendKeys "GetTickCount"
ws.SendKeys "{ENTER}"
0813デフォルトの名無しさんNGNG
>>811
> バッチファイルじゃ無理
わからんぞ。

>>810
start mailto:abc@def?subject=タイトル^&body=本文%0A%0D二行目

テキストの内容を読むにはforを使う。

0814810NGNG
wshでSendKeyで実現できました!
思っていた事が全部できちゃって驚きでした( ; ゚Д゚)

なんか色々できそうなので勉強してみます。
みなさんありがとうございました<(_)>
0815デフォルトの名無しさんNGNG
cmd終わったなw
0816デフォルトの名無しさんNGNG
>>815
?
0817デフォルトの名無しさんNGNG
Java関係のメイクや起動に使って重宝してます。
antとか使う方が便利らしいが
より気軽と思う。
0818デフォルトの名無しさんNGNG
Bシェルのコーディング規約が乗っているHPなんか、ないでしょうか?
よろしくお願いします。
0819デフォルトの名無しさんNGNG
時代はJScript.NET
0820デフォルトの名無しさんNGNG
あるファイルのタイムスタンプを取得し変数にセット
別のファイルのタイムスタンプを取得し変数にセット
2つの変数を比較し、違っていたら、何らかの処理を行うということを
やりたいのですが、どのようにしたら実現出来ますでしょうか?
0821デフォルトの名無しさんNGNG
何らかの処理によるな
0822デフォルトの名無しさんNGNG
for %i in (arufairu) do set hensuu=%~ti
0823デフォルトの名無しさんNGNG
なんとなく思いついたので、

kill *

これ、実際にやったら落ちたw
嫌な事があったら会社のpcに仕込んでみるか
0824デフォルトの名無しさんNGNG
質問です。

if not %9=="" set receipt=%2,%3,%4,%5,%6,%7,%8,%9
if not %8=="" set receipt=%2,%3,%4,%5,%6,%7,%8
if not %7=="" set receipt=%2,%3,%4,%5,%6,%7
if not %6=="" set receipt=%2,%3,%4,%5,%6
if not %5=="" set receipt=%2,%3,%4,%5
if not %4=="" set receipt=%2,%3,%4
if not %3=="" set receipt=%2,%3
if not %2=="" set receipt=%2
echo パラメーターを設定してください。

1行目で
set の使い方が誤っています。
と怒られます。
パラメーターが入ってない場合に、「,」が2個以上続くからと思われますが、
うまくこのエラーを回避する方法は無いでしょうか。
1晩考えてここまでたどり着きましたが、うまい方法が思いつきません・・・。
0825デフォルトの名無しさんNGNG
>>824
これはどうだ。%10以降もあればそれもreceiptに入れちゃうけど。
それより%1はreceiptに入れなくていいのか?
set receipt = %2
:Loop
if "%3" == "" goto End
set receipt = %receipt%,%3
shift
goto Loop
rem --------------
:End
0826824NGNG
>>825
ありがとうございますバッチリです!
「shift」コマンドの存在を知りませんでした。
%1は別のパラメータ指定するつもりなんで大丈夫です。
0827デフォルトの名無しさんNGNG
指定のフォルダ以下にあるVBプロジェクトファイル(*.vbp)を
一括コンパイルしたいのですが、このようなバッチプログラムは作成可能でしょうか?

Dir *.vbp /B /S

で一覧は作成できるのですが、この結果を

VB6 /m プロジェクト.vbp

といった感じでVB6.exeに渡す方法がわかりません。
0828デフォルトの名無しさんNGNG
ラーメンタイマー(要Cygwin)
sleep 180 && c:\windows\media\tada.wav
0829デフォルトの名無しさんNGNG
先生たすけてください。
Windows2000で、指定秒だけ待機させたいのですが、
choiceが使えなかったので悩んでます。
どのように書けば待機して次の行にいけるようになりますか?
0830デフォルトの名無しさんNGNG
%time%が指定回変化したら
重いけど
0831デフォルトの名無しさんNGNG
ping -n 10 localhostとか。
0832デフォルトの名無しさんNGNG
FOR %%i IN (1,1,1000) DO START http://www.2ch.net/
0833デフォルトの名無しさんNGNG
スゲー!
って、ハングアップしちゃったじゃんかよ。(’Д’;)
0834デフォルトの名無しさんNGNG
>>830-832
ありがとうございます!助かりました!
0835デフォルトの名無しさんNGNG
質問です。

同じドライブのなかに下記のようにユーザーごとにアクセスできるようにフォルダを作成しました。

d:\server\data\username
d:\server\data2\username_data

それをx:ドライブとy:ドライブにしてユーザーごとに表示させたくて、

net use x:server\%username% /yes
net use y:server\%username_data% /yes

とやってみたのですが、Xはうまくいったのですが、Yはうまくいきませんでした。
初心者な質問ですみません。よろしくお願いいたします。
0836デフォルトの名無しさんNGNG
複数のファイルに対して同じ名前のフォルダを作製
ファイルを同じ名前のフォルダに移動
各フォルダに移動しながら中のファイルを操作

って流れのものを作りたいんですけど可能なんでしょうか?
同名のフォルダを作ったり作成後のフォルダ名で移動する方法がわかりません。

なんとかなりますか?
0837デフォルトの名無しさんNGNG
for %%f in (*.*) do mkdir "tmp%%f" && copy "%%f" "tmp%%f"

ファイルと同名のフォルダ作れないから名前変えて、移動じゃなくてコピーだけど
こんな感じでできる
0838デフォルトの名無しさんNGNG
>>835
うまくいかなかったときのエラーメッセージは?
0839837NGNG
本格的なものが必用ならバッチはお勧めしない
0840デフォルトの名無しさんNGNG
>>835
net use y:server\%username%_data /yes
0841デフォルトの名無しさんNGNG
>>838
for %%f in (*.*) do mkdir "tmp%%f" && copy "%%f" "tmp%%f" || goto :error

:error
echo failed
0842835NGNG
>>838 エラーはまったく出ませんでした。

>>840 できました!!

みなさまありがとうございました。ほんと助かりました。
0843デフォルトの名無しさんNGNG
タスクバーに表示しないでバックグラウンド的に実行する方法ってないですか?
終了はタスクマネージャで終了するかログオフで行えればいいんですが。
0844デフォルトの名無しさんNGNG
バッチファイルについて質問です
例えば
あるフォルダとLhacaなどの圧縮ファイルがあって
そのフォルダをまるごとLhacaなどを使用して自動的に圧縮させて
違うフォルダに日付をつけて格納させたいのですが
こういうのって可能でしょうか?
0845デフォルトの名無しさんNGNG
.cabでよければcabarcと%time%, %date%あたり使えば楽勝
0846デフォルトの名無しさんNGNG
バッチファイルについて質問するときはOSも書くべきだと思う。
0847デフォルトの名無しさんNGNG
>>845
できればZIPファイルでお願いします

>>846
Windows2000です
0848デフォルトの名無しさんNGNG
>>847
標準じゃ無理。
Cygwin入れてzipコマンド使えばコマンドラインで処理できる。
どうしてもLhacaでやりたいならWSHとSendkeys使えばいい。
0849デフォルトの名無しさんNGNG
フォルダの中のファイルをリストアップして
EXEに渡す処理はどう書けばいいですか?
 C:\conv.exe AAA.bmp AAA.jpg
 C:\conv.exe B.bmp B.jpg
 C:\conv.exe CC.bmp CC.jpg
WinXPです。
0850デフォルトの名無しさんNGNG
やりたいことがよくわからんが、
bmpを探してconv.exeでjpgを出力だったら
for %%f in (*.bmp) do C:\conv.exe "%%f.jpg"
みたいなかんじ
これだファイル名がAAA.bmp.jpg みたいになるけど
0851デフォルトの名無しさんNGNG
INIファイル操作するコマンドラインツールってないですか?
ini c:\myapp.ini set SECTION IDENT=VALUE
見たいな感じで使えるもの
0852デフォルトの名無しさんNGNG
>>851
nircmdc.exe inisetval "c:\windows\test.ini" "section1" "TestValue" "1"
0853デフォルトの名無しさんNGNG
>>852
よこからですが、これは便利っすね〜、いろいろ出来て。
0854デフォルトの名無しさんNGNG
バッチファイルでサブルーチンage
@echo off

 set ret=label1
 set arg=aaa
 goto sub
:label1
 echo %arg%

 set ret=label2
 set arg=hello
 goto sub
:label2
 echo %arg%
 goto exit

rem 環境変数%arg%に%arg%%arg%をセットする
rem 入力 %arg%
rem 出力 %arg%
:sub
 set arg=%arg%%arg%
 goto %ret%

:exit
0855デフォルトの名無しさんNGNG
サブルーチン? call使えばいいんじゃないの?
0856どざーNGNG
>>855
うむ、「 call %0 」なども味わい深いものである。精進せよ。
0857デフォルトの名無しさんNGNG
関連付けを使わずにwavファイルを一回または連続で鳴らす方法おせーて
0858デフォルトの名無しさんNGNG
mplay32 /play C:\WINNT\Media\tada.wav
0859デフォルトの名無しさんNGNG
bachからソフトを起動し、そのソフトを終了させなくてもbachを終了させる方法ってあります?
call で呼ぶと、帰ってくるまでexitできなくて。
0860デフォルトの名無しさんNGNG
>>859
objWS = CreateObject(WscriptShell)
objWS.Run = 呼び出すプログラムへのパス)
という別のをCALLするとかしか思いつかん。
ERORRLEVELで
0861デフォルトの名無しさんNGNG
何とかなるかどうかはプログラムに拠るだろうし。
0862デフォルトの名無しさんNGNG
bachって何?
バッハ?
0863デフォルトの名無しさんNGNG
>>859
一週間前に同じことをしようとしたんだが、結局vbsにした。
で、>>860に落ち着いた。しかし、なんか統一感がないので、処理を全部vbsで書いた。
0864デフォルトの名無しさんNGNG
CreateProcess()だけするプログラムを作ればいいんじゃないの?
0865デフォルトの名無しさんNGNG
>>862
windows3.1がモーツァルトだとしたらそうだ。
0866デフォルトの名無しさんNGNG
>>859
start
0867デフォルトの名無しさんNGNG
batchでしたね(^_^;)startでいけました!
一回startで試したんですけど、パスを""で囲むとだめだったんですね。
0868863NGNG
>>866
横からありがとう。

START "タイトル" プログラムへのパス
でできた。

(雑誌の裏にでも書いておくべきメモとして。)
START ["タイトル"] [/Dパス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NOMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [コマンド/プログラム] [パラメータ]

**コマンドにつけた"引用符"が、タイトルと混同されるみたいだ。
0869デフォルトの名無しさんNGNG
Windowsの終了時に自動的にバッチを実行する方法ってありますでしょうか?
できるなら、ツール等を使わず、Windows環境内で実行できたらいいのですが。
環境は2000とXPです。
0870デフォルトの名無しさんNGNG
>>869
gpedit.msc
0871869NGNG
>>870
ありがとうございます。こんな機能あったのですね。
しかし、スクリプトに登録しても実行されてないみたい…なんで?
0872デフォルトの名無しさんNGNG
ftpでputするプログラムなんですが、そのputするファイル名
を可変にする方法を教えて下さい。

ftp -s:UPLOAD.txt

がバッチファイルの中身で、UPLOAD.txt 内には

OPEN 〜
USERID
PASSWORD
PUT C:\ファイル名
QUIT

と書いてます。

ここのファイル名を可変にしたいです。
実際にはその日の日付が入るのですが
UPLOAD.txt 自体がバッチファイルでは無いため
%date:~2,4%%date:~7,2%%date:~10,2%などとしても
dateが使えなくて困ってます。
0873デフォルトの名無しさんNGNG
>>872
echoを使ってUPLOAD.txtを生成すれば済む
0874872NGNG
>>873
なるほど。それならできそうです。
ありがとうございました。
0875デフォルトの名無しさんNGNG
ネットワークで繋がっているサーバの時刻を秒数付で表示させたいんですけど
何か良い方法はありませんか。
net timeだと分数までしかでないので、使えないんですよね。

osはw2kです。
0876デフォルトの名無しさんNGNG
>>875
何がしたいかも書くと吉
0877875NGNG
>>876
自分の使用しているサーバとタイムサーバの時間が合っていることを
見た目でわかるようにしたいのです。

net time のsetを使えば合うことは知っているけど、それを知らない人にも
合ってるよねってことを確認させたいのです。
0878デフォルトの名無しさんNGNG
>>877
俺だったらこうする。↓

ECHO "時間あってます"
0879デフォルトの名無しさんNGNG
CDのボリュームラベルをファイル名にしてファイル一覧を作るにはどうしたらいいですか?
0880デフォルトの名無しさんNGNG
dir q:の出力の一行目を取り込んでファイル名にして
dir q:\* /s /b > %LABELNAME%
0881875NGNG
>>878
2ch的にはそれでOKなんだけどね。
やっぱり無理か。
0882デフォルトの名無しさんNGNG
>>881
駄目な理由が分からない。
説明汁
0883デフォルトの名無しさんNGNG
無理でいいんじゃないの。
0884デフォルトの名無しさんNGNG
0885デフォルトの名無しさんNGNG
バッチで任意の環境変数をSETするとき、SETLOCAL文は必要でしょうか。
バッチ内部の環境変数はそのバッチが終われば消えると思っていたので、今まで記述したこと内のですが。
0886デフォルトの名無しさんNGNG
親のバッチファイルのを書き換えちゃうよ。
他のプロセスが親だった場合は知らないけど。
0887デフォルトの名無しさんNGNG
>>886 即レスTHANKS!
親から子をCALLしている場合ですね。逆に見れば、自己完結のバッチには不要ということですかね。
0888869NGNG
Windows終了時に自動でバッチを実行できないかと聞きました、869です。
gpedit.mscでシャットダウン時にスクリプトを実行する方法を教えていただいたのですが、
どうもうまく実行できないようです。
シャットダウン時にネットワークドライブの切断をするバッチ、
起動時にネットワークドライブに接続をするバッチを指定しているのですが、
スクリプトを実行中の文字は確認できるのですが実行できていないようです。
バッチ自体は手動で起動してみると正常に実行できるので不備はないと思うのですが、
何が原因でしょうか?アドバイスよろしくお願いいたします。
0889デフォルトの名無しさんNGNG
ネットワークドライブを切断するプログラムのエラーメッセージや
エラーコードをファイルに出力して原因を調べたらいいのではないかと。
0890872NGNG
作ったFTPのバッチをFTPサーバーに入れて正常に動作することが確認できました。
今度はFTPサーバーに置いたバッチをクライアントから実行したいです。

net use \\サーバー名\バッチを置いたフォルダ /user:ユーザ名 パスワード

でFTPサーバーに接続してから

call \\サーバー名\バッチを置いたフォルダ\バッチファイル名

と書いたバッチファイルをクライアントで実行したところ
open 〜
の時点でinvalid commandというエラーがでてしまいます。
クライアントからサーバーのバッチファイルを実行することはできないのでしょうか?
0891デフォルトの名無しさんNGNG
>>890
telnet
0892872NGNG
>>891
もう少し詳しく教えてもらえませんでしょうか。
telnetでLAN接続されているFTPサーバーに接続することはできるのですが、
そこから>>872のように、さらに別の(LAN接続されていない)FTPサーバーに
ログインしなければなりません。その方法がわかりません。
0893869NGNG
コマンドをテキストに出力してみたんですが、起動・終了時の実行時はなぜか出力されない…
どうして…orz
0894デフォルトの名無しさんNGNG
>>879
は俺も知りたい。
0895デフォルトの名無しさんNGNG
>>894
>>880
0896デフォルトの名無しさんNGNG
ドライブ C のボリューム ラベルは XXXXX です
で可変長で取れないよ。スペース検索してとか面倒だし。
一発で取れるのないの?
0897デフォルトの名無しさんNGNG
dir q: | for /f "usebackq tokens=5" %%i in (`find "ボリューム ラベル"`) do set LABELNAME=%%i
0898デフォルトの名無しさんNGNG
>>897
ありがとう。
パイプにforをつなげられるのか。
MSのスクリプトは気味の悪い構文が多いなぁ・・・
0899デフォルトの名無しさんNGNG
>>898
無計画な増改築を繰り返しているからなー。
0900デフォルトの名無しさんNGNG
バッチ処理の途中で処理を止めて、プロンプト画面で打ち込んだ文字列を
テキストファイルに出力する方法ってありますか?
たとえば、

dir > a.txt
   ↓
ここでバッチを一時停止させる(A処理)
   ↓
文字列を打ち込むと自動でa.txtに追記させるような方法(B処理)
   ↓
エンターキーか何かで続きのバッチ処理を再開させる(C処理)
   ↓
続きのバッチが流れる

(A・B・C)処理の方法ってありますか?
0901デフォルトの名無しさんNGNG
rem hoge.bat
@echo off
pause
copy con %1

使い方はhoge a.txt、入力の終了はCTRL+Z。
0902900NGNG
>>901
Thanks.
画面の文字列は”%1”もしくは”%%1”で記憶できるんですね。
願わくば入力の終了をCtrl+Zではなくエンターキー一回で
できれば言うことないんですが・・・。
0903デフォルトの名無しさんNGNG
>902
君、一から勉強しなおした方がたぶん早いよ。
0904900NGNG
(´・ω・`)ショボーン
0905デフォルトの名無しさんNGNG
質問なんですが、バッチファイル内でexeを呼び出しているんですが、
バッチファイルをダブルクリックで実行するとそのexeは正常に動くんですが
windows→ファイル名を指定して実行でバッチファイルをフルパスで
起動すると、そのexeがうまく動いてくれません。
何が原因かがわからず困っています。
どうかご教授を・・・。
0906デフォルトの名無しさんNGNG
バッチファイルの先頭付近に↓を追加してみるとか
%~d0 && cd %~p0
0907905NGNG
>>906
私に対しての答えでしょうか?
対策としては、これを追加すれば出来るかもしれないということでしょうか?
バッチは詳しくわかってないので、%~d0 && cd %~p0が何を
表しているか、わからないのですが・・・。
0908デフォルトの名無しさんNGNG
>>907
Windowsのヘルプくらい見れるだろ。
0909デフォルトの名無しさんNGNG
プログラム(testprogram.exe)を起動するには
START testprogram.exe
だと思いますが、プログラムを終了するコマンドはありますか?
0910デフォルトの名無しさんNGNG
>>909
http://www.google.co.jp/search?q=kill.exe
0911デフォルトの名無しさんNGNG
>>910
KILL testprogram.exe で終了できるんですね。ありがとうございます。
もうひとつお願いします。
バッチ実行中に、「終了するには10秒以内にFのキーを押してください」と表示させて
10秒以内にFのキーを押したときだけEXITに進んでバッチファイルを終了し、
10秒以内になんのキーも押さないときにはただ次の行に進ませるにはどうすればいいですか?
0912デフォルトの名無しさんNGNG
>>911
http://www.google.co.jp/search?q=choice.exe
0913デフォルトの名無しさんNGNG
BATとWSHとどっちを使うのがいいですか?
0914デフォルトの名無しさんNGNG
>>913
BAT の検索結果 約 16,600,000 件中 1 - 10 件目 (0.09 秒)
WSH の検索結果 約 678,000 件中 1 - 10 件目 (0.16 秒)

BATの圧勝。
0915デフォルトの名無しさんNGNG
>>913
用途次第
0916911NGNG
調べましたがこれでいいですか?
CHOICE /C:FN /T:2,10 終了するには10秒以内にFのキーを押してください
IF ERRORLEVEL 1 GOTO END
:END
EXIT
0917911NGNG
失礼しました。こうです。これでいいですか?

CHOICE /C:FN /T:2,10 終了するには10秒以内にFのキーを押してください
IF ERRORLEVEL 1 GOTO END
REM ここに入れるプロセスは現在作成中
:END
EXIT
0918デフォルトの名無しさんNGNG
自分で試せよ
0919911NGNG
自分で試したけどなんかうまくいかない。
プロンプト画面が一瞬だけ表示されてなんかエラーメッセージみたいなのが
表示されるんだけどすぐ消えるので読み取れない。
プロンプト画面が消えないようにしてエラーメッセージを読むにはどうすればいいですか?
0920デフォルトの名無しさんNGNG
>>919
コマンドプロンプトを先に起動させておいて、その中でバッチを実行するとメッセージが読める。
俺んとこではこう表示される。
CHOICE: タイムアウト時の既定値が指定された(または既定値の)選択肢にありません.
なのでこうしろ。
CHOICE /N /C:NF /T:N,10 終了するには10秒以内にFのキーを押してください
IF ERRORLEVEL 2 GOTO END

ところでEXEとかの実行可能ファイルはstartぬきでも呼べるよ。
0921デフォルトの名無しさんNGNG
バッチファイル側でコプロセスの終了を待って次に進む->startなし
バッチファイル側でコプロセスの終了を待たずに次に進む->startあり
0922919NGNG
>>920-921
サンクス。やってみます。
0923デフォルトの名無しさんNGNG
ショートカット(*.LNK)を実行ってできますでしょうか?
0924デフォルトの名無しさんNGNG
>>923
つまりお前には実行できなかったということだな
0925デフォルトの名無しさんNGNG
一人頭の悪い厨房が常駐してるみたいだな。
わざわざこんな地味なスレ荒さんでも
0926デフォルトの名無しさんNGNG
>>924
そうです。
>>925
フォローありがとうございます。って荒らしてんの、漏れじゃないですよね(;´Д`)
0927デフォルトの名無しさんNGNG
DOS窓開く
実行したいショートカットをDOS窓へドラッグドロップ
リターン

DOS窓でできればバッチも同じ
0928923NGNG
>>927
あぁ、それでよかったんですか。
わざわざ頭に start つけてますた…。逝ってきます
0929デフォルトの名無しさんNGNG
choiceって、winNT系はそのままじゃ使えんのか…
ライブラリがあるけど、汎用性の問題から使えないなぁ。
0930デフォルトの名無しさんNGNG
>>928
start でも問題なく開けるぞ。 >>406 みれ。
0931デフォルトの名無しさんNGNG
バッチファイルを作ったのでアイコンをダブルクリックするとちゃんと動作するんだけど
タスクで決まった時間にこの.batファイルを実行しようとするとピクリとも動かない。
Dドライブにしまった.batファイルをタスクで実行するにはそのままじゃだめなの?
もしかして.batファイルはタスクでは動かせないのだろうか。
0932923NGNG
>>930
あぁ、本当だぁ…。もう一回逝ってきます
0933デフォルトの名無しさんNGNG
当方w2k鯖にてFTP.exeをバッチにてファイル転送をしたいのですが
バッチ内容を手動で行うと正常動作確認できたのですが、
バッチにて処理を行うと、putやgetの所で
FTPexe アプリケーションエラー、メモリがwrittenになることが・・・
とエラーが出るのですが原因が分かりません。
鯖再起動はサービスが24h稼動の為止める事が出来ません。
原因を教えてください。
0934デフォルトの名無しさんNGNG
>>931
ちなみに、タスクってWindowsのタスクスケジューラですか?
Win2000とかならば、タスクスケジューラのログとか見れば
場合によっては分かると思います。

あとは、アプリケーションのコマンドとか呼び出してるならば
パスとかの環境変数とかが足りない等々、私はだいたい
その辺で嵌るんで確認してみてはどうでしょうか。
0935デフォルトの名無しさんNGNG
>>933
原因はわかんないけど wput に乗り換えてみたらどうですか?
ソースもあるから、変なこと起きても対処しやすいし。
0936デフォルトの名無しさんNGNG
>>931
漏れは>>934に加えてNT系OSでは .bat じゃなくて .cmd にしてるけど・・・
.bat って command.com が動きそうで嫌だから。
0937デフォルトの名無しさんNGNG
>>931
atコマンドで登録したらうまくいくかもね。
0938デフォルトの名無しさんNGNG
>>933
バッチでFTPexeは起動できるけど
バッチでFTPexeを直接操作できないよね
ftp -s: のことだろうか?
具体的に何やってるか書かないと意味不明
0939931NGNG
見当をつけて頂いてとても助かります。ありがとう。
>>934
はい、Windowsのタスクスケジューラです。OSはWin2000です。
ログが見れることをはじめて知ったので見てみます。
環境変数はまだ使わないで、del D:\フォルダ名\ファイル名.dbのように
絶対指定にしています。
>>936
.cmd を調べてみます。

>>937
atコマンドをググりましたがよくわかりません。帰ってきたらもういちど
じっくり検索してみます。
0940デフォルトの名無しさんNGNG
>>939

>環境変数はまだ使わないで、del D:\フォルダ名\ファイル名.dbのように
>絶対指定にしています。

おまえ >>934 の言った環境変数の意味分かってるか?
0941939NGNG
スケジュールログを見たら、ログオン失敗と出ていました。
タスクスケジューラの設定がいけなかったようです。直したつもりです。
プログラムもだめなところがあるかもしれませんが、タスクの
時間がきたら動くか確認します。ありがとうございました。またよろしくお願いします。

>>940 用語も覚えるようにします。
0942933NGNG
>935
新たに何かを入れる時は申請通さないといけないので
見送りました
>938
バッチでFTPコマンド使う場合は-s:コマンドテキストが
当然だと思い説明を省きました。

FTP.exeをw2ksp4のバージョンの新しいのを
コピーして動かしてみた所正常に動きました。
レスありがとうございました。
0943デフォルトの名無しさんNGNG
>>942
プログラミングとなんも関係ないな
アプリの使い方ならWin板か初心者板にでも逝けよ
0944デフォルトの名無しさんNGNG
メッセージを時間指定して(例えば5秒間)表示することってできますでしょうか?
0945デフォルトの名無しさんNGNG
>>944
可能。
やり方は、こいつが書いてくれるだろう

        ↓       
0946デフォルトの名無しさんNGNG
>>831
0947デフォルトの名無しさんNGNG
外部プログラム使えばなんでもできるが、
それをバッチファイルプログラミングと呼んでいいものか
0948デフォルトの名無しさんNGNG
標準コマンドならありだろ
0949デフォルトの名無しさんNGNG
外部プログラムを連続して呼べるようにしたのがバッチファイルじゃないのか?
0950デフォルトの名無しさんNGNG
バッチ処理を記述できるのがバッチファイルだろ。
中か外かは関係ない。
0951デフォルトの名無しさんNGNG
バッチからrubyを呼べば何でもできる。
0952デフォルトの名無しさんNGNG
自分でexeを作ってバッチから呼べば何でもできる。
0953デフォルトの名無しさんNGNG
@echo off
echo main() {puts("hello, world");} > hello.c
bcc32 hello.c
hello
0954デフォルトの名無しさんNGNG
リネーム 年月日時分秒
0955デフォルトの名無しさんNGNG
ファイルの日付けでリネームしようと思ったけど
素直にリネームソフト使った方がよさそうだね。
年月日時分秒.拡張子 とかバッチじゃ無理っぽい
0956デフォルトの名無しさんNGNG
日付・時刻をファイル名にする

set d=%date%
set d=%d:~0,4%%d:~5,2%%d:~8,2%
set t=%time%

if not "%t:~0,1%"==" " set tt=%t:~0,2%%t:~3,2%%t:~6,2%
if "%t:~0,1%"==" " set tt=0%t:~1,1%%t:~3,2%%t:~6,2%
echo %d%%tt%

Wikiかなんかのまとめサイトが欲しい今日この頃
0957デフォルトの名無しさんNGNG
コマンドの出力結果を
新規フォルダ作成時の
名前に使いたいと思ってます。

それで下のように考えたのですが、

(コマンド) > kakuno.txt
md (kakuno.txtに書かれている文字列)

この2行目はどのように書くべきでしょうか?
0958デフォルトの名無しさんNGNG
for /F "usebackq delims=" %%i in (`コマンド`) do (
 md %%i
)
0959デフォルトの名無しさんNGNG
>>957さん
ありがとうございます。
もうひとつ聞かせてください。

do の部分で、md の後 新規作成ディレクトリへの
xcopy を実行するには、どのように書いたらいいのでしょうか?
0960デフォルトの名無しさんNGNG
for /F "usebackq delims=" %%i in (`コマンド`) do (
 md %%i && xcopy c:\src\* %%i\
)
0961デフォルトの名無しさんNGNG
>>960さん
ありがとうございました。
0962944NGNG
>>946
thx
0963デフォルトの名無しさんNGNG
Win98(First)で単純に1行
start \\192.168.*.*
と書いてバッチファイルとして保存したもので
相手先の共有フォルダの一覧を開こうとしたら、
フォルダが開かれないまま延々とループして終わりません。
/w オプションを付加したり、頭に @echo off を入れたり、
2行目に cls だの pause だのを入れても同じです。
また、「ファイル名を指定して実行」から当該コマンドを実行しても同様の動きです。
ただ、DOSプロンプトからバッチファイルを実行ないし同様のコマンドを実行すると
思った通りの動作をします。
事前にWin98のFirstEditionで試したところ
正常動作して「完了」ウインドウになっていたんですが…
あと、ping \\192.168.*.* だと正常に動いて完了になるんですよね…
0964デフォルトの名無しさんNGNG
共有ファイルを開くのであれば
net use x: \\hostname\share
じゃないのか?
0965デフォルトの名無しさんNGNG
>>963
バッチのファイル名を start.bat にしていると思われ。
自分自身を呼び出すから他の名前にすれ
0966デフォルトの名無しさんNGNG
上のほうにあったサンプル
@echo off
dir c: | for /f "usebackq tokens=5" %%i in (`find "ボリューム ラベル"`) do set LABELNAME=%%i
echo LABELNAME=%testfile%
を実行したところ
C:\>set LABELNAME=WindowsXP
LABELNAME=

C:\>
となってうまくいきません。echo offしてるのになぜかコマンドが表示されてしまい
結果としてset LABELNAME=でうまく代入されていません。何がいけないのでしょうか?
環境はWinXP Pro SP2のcmd.exeです。
0967デフォルトの名無しさんNGNG
echo LABELNAME=%testfile%
は
echo LABELNAME=%LABELNAME%
の間違いでした。このコードで>>966の現象が発生します。
0968デフォルトの名無しさんNGNG
>>966
findからfindstrに
0969デフォルトの名無しさんNGNG
>>968
findstrでも変わらずです・・・
0970デフォルトの名無しさんNGNG
>>966
うちでも同様でした。(xphome)

dir c: | for 〜 は
dir c: | cmd /c for 〜 と解釈されるのかな?
子プロセスで環境変数セットしても親には影響しないってことみたい・・・

パイプをやめれば正常に動きますね〜
dir c: > temp.txt
for /f "usebackq tokens=5" %%i in (`find "ボリューム ラベル" temp.txt`) do set LABELNAME=%%i
0971デフォルトの名無しさんNGNG
自分の環境ではforの()内に日本語を入れると正常に処理できないことがあるが、他の環境でも再現しますか?
cmd.exe 5.0.2195.6824(2KSP3+KB835732)

for /f "usebackq delims=" %%a in (`type %1 `) do @echo %%a
%1がASCIIのみだと正常に処理されるが、
%1に日本語を入れると、「指定されたファイルが見つかりません。」となる時がある
例:"C:\WINNT\グリーン ストーン.bmp"
0972デフォルトの名無しさんNGNG
半角スペースが悪さしてるわけじゃないよね?
0973デフォルトの名無しさんNGNG
>>972
C:\>for /F "usebackq delims=" %a in (`type "C:\新規.txt"`) do @echo %a
指定されたファイルが見つかりません。
C:\>for /F "usebackq delims=" %a in (`type "C:\新規.txt" `) do @echo %a
新規.txtの中身

とエラーが出ないことがあるので、後ろに半角スペースを付けた
ここらへんも何故そうなるかが分らないんだよな
0974デフォルトの名無しさんNGNG
cmdを極限まで極めるのとwshに早々に乗り換えるのとどっちが効率がいいですか?
0975デフォルトの名無しさんNGNG
>>974
両方をそこそこ使えるようにするのが効率いい。
0976デフォルトの名無しさんNGNG
Cygwinのbash
0977デフォルトの名無しさんNGNG
for /f "tokens=5" %%i in ('vol c:') do set LABELNAME=%%i
0978デフォルトの名無しさんNGNG
はっきりいってバッチプログラムあまりよく知らんが、

クライアント(Win2000)のIPアドレス・デフォルトG/W・DNSなんかを
変えたいんだが、クライアントの操作ユーザーがUser権限なんスよ。

そこで、バッチプログラムでダブルクリック一発で変更させたいんだが、
そのファイルを実行させるときだけ、Runasコマンド等で
一時的にAdministrator権限で動かせることはできるの?

漏れの考え方では、

administratorのパスワードが書いたファイルを読み込み、
変数やら何チャラに保存し、それを使用してRunasを実行させ、cmdを実行
↓
callやら何やらでnetsh等のコマンドでTCP/IPを変更する
↓
最後にadministratorのパスが書かれたファイルを削除する

ってな事を考えてるんだけど、そもそも出来るの?
0979デフォルトの名無しさんNGNG
>>978
できそう。
0980デフォルトの名無しさんNGNG
わかった。やってみる
0981デフォルトの名無しさんNGNG
次のスレ助けてくれんか

ハッカーに聞きたい。
http://pc5.2ch.net/test/read.cgi/tech/1104317350/
レス数が950を超えています。1000を超えると書き込みができなくなります。