初心者〜管理者まで必読!コマンドライン(DOS Pt.4)

このエントリーをはてなブックマークに追加
952名無し~3.EXE:2006/07/05(水) 05:27:30 ID:6oZqBElV
もれはMinGW+msysでWinのコマンドほとんど知らない
953名無し~3.EXE:2006/07/05(水) 08:59:58 ID:Wa6hPqt/
それはそれでアレだな。
954名無し~3.EXE:2006/07/05(水) 23:27:12 ID:LxN8ss0Z
>>951
内部コマンドに違いは無い。
外部コマンドというか、標準で入ってるコマンドラインツールの種類に違いがある。
その辺のことは普通にググれば出てくる。
955名無し~3.EXE:2006/07/08(土) 05:59:32 ID:FL8PyHJr
バッチファイルにフォルダをドラック&ドロップしてフォルダパスを取得し、
プログラムにそのフォルダパスを渡そうと思ったのですが、
この時に窓が起動したパスはバッチファイルがある場所じゃないんですよね。

cdで移動させないとダメなのですが、そのままフルパスを書き込んでしまうと
バッチファイルとプログラムのあるフォルダを移動させた時に書き換えなければなりません。

ドラック&ドロップした時にバッチファイルのあるパスを取得する方法はないのでしょうか?
956名無し~3.EXE:2006/07/08(土) 07:42:24 ID:2Z43z8uu
>>955
プログラムにフォルダパスを渡すのが目的なら、プログラムの実行ファイルかショートカットに
フォルダをD&Dすればいいじゃん。それに何故「D&Dしたフォルダのパスを渡す」のに
バッチファイルのパスが関係してくるのかわからん。
隠さないで、ちゃんと何というプログラムを使ってどういうことがしたいのか書けよ。
隠したいなら、その質問自体心の中に隠しておけ。

つーかパスの取得方法知ってるんだから、%0〜%9(0=バッチ自身、1〜9=実行時引数)とか、
%~f1だの%~dp0だのっていう修飾子は解ってるんだよね?
957名無し~3.EXE:2006/07/08(土) 08:00:01 ID:FL8PyHJr
>>956
済みません、別に隠しておいた訳じゃないんです。
知り合いに作って貰ったjavaのプログラムで、下みたいにして使うんです。
java -classpath ConvLib.jar MakeArchive "フォルダフルパス"

"フォルダフルパス"の所を%1にしてやってみたら>>955で書いたみたくなったのです。
958名無し~3.EXE:2006/07/08(土) 09:53:55 ID:2Z43z8uu
%1 → "%~f1"
でどうだ?
ダメなら一度リダイレクトでそのコマンド自体を出力して確認してみろよ。
というかこれは最初にやるべきことなんだがな。
959名無し~3.EXE:2006/07/08(土) 10:05:07 ID:FL8PyHJr
>>958
どうやら意図が伝わっていないみたいです…。

D&Dでcmdが起動するとタブルクリックの時とは違いカレントフォルダが
バッチファイルのある場所とは違う場所になっているんですよね。
ですのでバッチの中身は下の様にして"バッチファイルのあるフォルダのパス"を
D&Dでどうにかして取得する方法はないかという訳です。

cd "バッチファイルのあるフォルダのパス"
java -classpath ConvLib.jar MakeArchive %1
960名無し~3.EXE:2006/07/08(土) 10:20:12 ID:2Z43z8uu
>>959
>>956に書いたじゃん>>%~dp0

%0 バッチファイルのパス c:\hoge\test.bat
%~d0 ドライブ <c:>
%~p0 パス <\hoge\>
%~n0 ファイル名 <test>
%~x0 拡張子 <.bat>

なのでdpならドライブとパスでc:\hoge\test.batに対してc:\hoge\が取得できる。
961名無し~3.EXE:2006/07/08(土) 10:48:44 ID:FL8PyHJr
おぉ、dpとかの機能を正しく理解していませんでした…。
お手間を取らせてしまい申し訳ありませんでした。
そしてご丁寧に教えて下さり、ありがとうございました。
962名無し~3.EXE:2006/07/08(土) 18:16:48 ID:IP7ZlJVS
質問です。

batファイルを作って、
複数のファイルをドラッグして
渡されたファイル1つ毎に同じ処理をしたいと思います。
forを使って出来るかなと思ってヘルプを読んだりしましたがわかりません。

for %%i (引数で渡されたファイル毎に) do (
他のコマンドA %%i
他のコマンドB %%i
)

どなたかご存知でしたら教えてください。
963名無し~3.EXE:2006/07/08(土) 19:03:46 ID:wr6yuu9j
shift
964名無し~3.EXE:2006/07/08(土) 19:03:59 ID:2Z43z8uu
for %%i in (%*) do

ちなみにshiftとgotoを使う手もある。
965962:2006/07/08(土) 19:22:03 ID:IP7ZlJVS
>>963-964
ありがとうございます
出来ました
966名無し~3.EXE:2006/07/09(日) 03:20:48 ID:k9je+Jen
自作プログラム使ってテキストに書き込むってのやりたいんですけど、Dos窓から

自作プログラム -k[ここにaaa.txtに送り込みたい内容] aaa.txt

で実行なんですが複数行にするとそのプログラムが受け付けないです。
aaa.txtに送り込みたい内容を複数行にしたいです。

こういうときってどうすればいいんでしょうか?
なんか&#0173;みたいなの使って改行を表す方法ないですか?
967名無し~3.EXE:2006/07/09(日) 03:57:59 ID:ZgiFyndQ
こっちに引っ越してきても同じこと。
ファイルかパイプ渡ししろ
968名無し~3.EXE:2006/07/09(日) 14:13:17 ID:i5j0UCX3
自作プログラム側である文字列を改行コードとして認識して書き込むときに改行コードに変換すればいいじゃん。
例えば"aaa.txtに送り込みたい内容"の文字列中の"_CRLF_"は改行コードに変換してaaa.txtに書き込めばいい。
あいうえお
かきくけこ
と書き込みたい場合は
aaa.exe -k[あいうえお_CRLF_かきくけこ] aaa.txt
みたいな感じで。
969名無し~3.EXE:2006/07/09(日) 22:23:02 ID:mHAHDzjC
そんな変換するくらいなら、ファイル入力(別に標準入力でも同じだけど)を作った方が楽なんじゃない?
970名無し~3.EXE:2006/07/10(月) 00:29:11 ID:tKP9/6jd
確かに単語(複数バイト長の)変換は結構大変だね
971名無し~3.EXE:2006/07/10(月) 15:03:43 ID:JpfPFJv5
dir /b >a.txt
でファイルリスト作るときに、そのファイル内の行頭・行末に'をつけたいときはどうすればよい?


a.txtの中を
'filename1'
'filename2'
...
みたいにしたいんだけど。
972名無し~3.EXE:2006/07/10(月) 15:12:31 ID:UjwK8SZ8
>>971
dirコマンドではそういう形式での出力は出来ないから、
後からa.txtを読み込んで書き換えるとか、
そういう形式で出力できるコンソールアプリを作るとか、
for使ってお好みの出力を行うとか、まあいろいろあるわな。
973名無し~3.EXE:2006/07/10(月) 15:41:22 ID:IktJ6p+G
>>971
for /f "usebackq delims=" %i in (`dir /b`) do echo '%i' >> a.txt
974名無し~3.EXE:2006/07/10(月) 15:53:48 ID:IktJ6p+G
ごめん、こっちのがいいのか
for /f "usebackq delims=" %i in (`dir /b`) do @echo '%i' >> a.txt
975名無し~3.EXE:2006/07/10(月) 19:16:55 ID:IUPBOjmc
次スレの準備しましょうか?
976名無し~3.EXE:2006/07/10(月) 19:19:59 ID:IUPBOjmc
テンプレ

[初心者〜管理者まで必読!コマンドライン(DOS Pt.5)]

 適材適所で GUI と CUI を組み合わせて、(゚д゚)ウマー

前スレ
1 http://pc.2ch.net/win/kako/1002/10023/1002392089.html
2 http://pc5.2ch.net/win/kako/1013/10138/1013833995.html
3 http://pc8.2ch.net/test/read.cgi/win/1062775949/
4 http://pc8.2ch.net/test/read.cgi/win/1116131036/
DOS由来コマンドだけでなく、Windows バージョンアップのたびに拡充されてきたコマンド、
wsh(cscript)、cygwin、Resource Kit、Support Tools、その他のフリーソフト等ふくめ
コマンドラインインタフェースに関するネタならなんでもOK。

質問も歓迎だけど、自分で調べて勉強する努力も忘れずに。
977名無し~3.EXE:2006/07/10(月) 21:52:49 ID:0gdY8zN7
>>974
なんでこの場合にusebackq使うの?何か(隠れた)メリットあるの?
978名無し~3.EXE:2006/07/10(月) 22:32:58 ID:Gfcho6+j
>>977
'%i' を展開するためじゃないの。
979名無し~3.EXE:2006/07/11(火) 00:09:36 ID:4qvvaCeq
*
980名無し~3.EXE:2006/07/11(火) 00:10:12 ID:4qvvaCeq
*
981名無し~3.EXE:2006/07/11(火) 00:11:06 ID:4qvvaCeq
*
982名無し~3.EXE:2006/07/11(火) 00:23:37 ID:HxtG+321
次スレ立てたよ〜

初心者〜管理者まで必読!コマンドライン(DOS Pt.5)
http://pc8.2ch.net/test/read.cgi/win/1152544955/
983名無し~3.EXE:2006/07/11(火) 00:37:10 ID:gLxqbtPB
つぶすか
984名無し~3.EXE:2006/07/11(火) 00:38:07 ID:gLxqbtPB
というわけで、
usebackq
の話は次スレで。
985名無し~3.EXE:2006/07/11(火) 00:39:04 ID:gLxqbtPB
*
986名無し~3.EXE:2006/07/11(火) 00:40:19 ID:bZPkFLg1
ところで、MS-DOS対応のプリンタって少なくなったよね。
987名無し~3.EXE:2006/07/11(火) 00:41:50 ID:bZPkFLg1
今や、生DOSにとっては受難の時代だよね。
988名無し~3.EXE:2006/07/11(火) 00:42:55 ID:bZPkFLg1
LIPS III とか ESC/P 対応のプリンタも少なくなり、消え去るのみか。
989名無し~3.EXE:2006/07/11(火) 00:44:54 ID:HxtG+321
じっさいここ数年、BIOS書き換え以外で使ったことないからなぁ・・・
990名無し~3.EXE:2006/07/11(火) 00:45:01 ID:bZPkFLg1
プリンタに限らず、DOSの需要もなくなってはいないのだが。
(こういう話は他のDOS専用スレでするべきなんだがな)
991名無し~3.EXE:2006/07/11(火) 00:46:58 ID:bZPkFLg1
>>989
たしかにね。自分もまともにDOSつかったのってBIOS書き換えの時かも。
数年前、ISAバスの設定ユーティリティがDOSからしか立ち上がらんので立ち上げたこともあったが。
992名無し~3.EXE:2006/07/11(火) 00:51:24 ID:CZXR7KDi
埋め
993名無し~3.EXE:2006/07/11(火) 00:51:41 ID:HxtG+321
Missing Operating System
994名無し~3.EXE:2006/07/11(火) 00:52:13 ID:CZXR7KDi
埋め
995名無し~3.EXE:2006/07/11(火) 00:52:18 ID:HxtG+321
Invalid system disk.
Replace the Disk and then press any key.
996名無し~3.EXE:2006/07/11(火) 00:53:20 ID:CZXR7KDi
埋め
997名無し~3.EXE:2006/07/11(火) 00:53:53 ID:CZXR7KDi
埋めますよ?
998名無し~3.EXE:2006/07/11(火) 00:54:07 ID:HxtG+321
NTLDR is missing
Press Ctrl+Alt+Del to restart
999名無し~3.EXE:2006/07/11(火) 00:54:28 ID:CZXR7KDi
埋め
1000名無し~3.EXE:2006/07/11(火) 00:55:09 ID:HxtG+321
How many files(0-15)?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。