17/05/20 08:10:06.10 N++czmo3.net
>>87
眠すぎたのと集中力が散漫で気づいてないだけでした・・・
すいません
それと指摘の通り/c:に変えたら期待通りの動作になりました
サンクス!
90:デフォルトの名無しさん
17/05/20 21:37:37.96 HrYyDnOr.net
>>88
その言い方に嫌な感じがするんだがちゃんと引数の意味を調べて使ってるよね
/x /c:"%%~ni"としてるんなら、変な勘ぐりスマン
91:デフォルトの名無しさん
17/05/20 22:35:16.21 N++czmo3.net
>>89
/x /c:"%%~ni"で問題なく動作しています
細かいところまでありがとう
92:デフォルトの名無しさん
17/05/22 14:12:41.59 Q9T2A2Wt.net
こんなろくに理解せずそのまんまコピペして使ってるとトラップに引っかかるぞ
93:デフォルトの名無しさん
17/05/22 22:28:16.59 b+LuBt/G.net
下位フォルダに移動することも検討してるなんてレスから
/sが必要だとも思えんよね
94:デフォルトの名無しさん
17/05/22 22:30:42.85 b+LuBt/G.net
もし/sが意図通りだったら
aaa.txt
aaa\aaa.txt
なんて状況どうするんだって話だし
95:デフォルトの名無しさん
17/05/26 07:30:18.71 /NUGeMQI.net
>>89
> その言い方に嫌な感じがするんだがちゃんと引数の意味を調べて使ってるよね
同意
88の1行目で奴の人物像がすべて分かる
96:デフォルトの名無しさん
17/05/26 16:05:36.92 OOQCykcT.net
引数 %1 %2 ,, は%9 までだが
shiftで取り出せば%10以上でも取り出せた
97:デフォルトの名無しさん
17/06/15 12:35:49.64 j04OpPTD.net
Cドラのdown配下のmp4とaviを
DドラTozakaruzoSaikonkaraに集約してコピーしたいときはどうするの?
XCOPY "C:\down\*.mp4” "D:\TozakaruzoSaikonkara\" /d /e /h /r /y
XCOPY "C:\down\*.avi" "D:TozakaruzoSaikonkara\" /d /e /h /r /y
ワイルドカード使いたいけど、eroやmoroのところが難しい
for文の記述の方がいいなど、よろしくお願いします。
C:/
├down/
│ └ ero/
│ └ 111.mp4
│ └ moro/
│ └ xx2.avi
│ └ zzz.mp4
│ └xxx.avi
D:/
├TozakaruzoSaikonkara/
│ └ 111.mp4
│ └ xx2.avi
│ └ zzz.mp4
│ └ xxx.avi
98:デフォルトの名無しさん
17/06/15 13:13:57.77 6QOS5lbl.net
robocopy /?
99:デフォルトの名無しさん
17/06/15 15:41:43.67 y+UEOWCj.net
>>96
cd /d c:\down
cd d:TozakaruzoSaikonkara
for /r %%i in (*.avi *mp4) do copy /y "%%~fi" d:
100:デフォルトの名無しさん
17/06/15 15:46:23.72 y+UEOWCj.net
cd d:\TozakaruzoSaikonkara の方がいいか
101:デフォルトの名無しさん
17/06/15 15:50:20.24 y+UEOWCj.net
もしフォルダが無いなら
md d:\TozakaruzoSaikonkara 追加してくれ
102:デフォルトの名無しさん
17/06/15 16:07:02.35 y+UEOWCj.net
*.mp4 だった
穴だらけだな
俺もボケてきたか
103:デフォルトの名無しさん
17/06/15 17:02:52.10 +JrLzVDI.net
>>98
おー、inの句に並列できるんですね
%%~fiのfはfileの意味でしょうか
いずれにしても無事コピーされました
応用も効きそうなので調べて利用させていただきます!
ありがとう
104:デフォルトの名無しさん
17/06/15 17:08:46.74 +JrLzVDI.net
いや、フルパスかな
初めてだったので、楽しみます
ありがとう
105:デフォルトの名無しさん
17/06/16 01:17:16.66 fojoWyA2.net
>>103
俺がもっといいやり方がないか調査するからとりあえずmoroフォルダをうp!
106:デフォルトの名無しさん
17/06/17 18:10:57.34 hP08xqzx.net
>>98
ドライブとディレクトリの違いであるのか、コピーと移動の違いであるのか、
教えていただけたらうれしいです。
>>96
で、同じドライブの別フォルダに移動したいとき、下記教えていただいたコマンドを変えて実行すると、
別ドライブのときのようにコピーがされない状況です。
cd /d c:\down
cd c:\TozakaruzoSaikonkara
for /r %%i in (*.avi *mp4) do move /y "%%~fi" c:
---------
下記の用に移動したい
C:/
├down/
│ └ ero/
│ └ 111.mp4
│ └ moro/
│ └ xx2.avi
│ └ zzz.mp4
│ └xxx.avi
C:/
├TozakaruzoSaikonkara/
│ └ 111.mp4
│ └ xx2.avi
│ └ zzz.mp4
│ └ xxx.avi
107:デフォルトの名無しさん
17/06/17 21:48:00.86 4uF4heHb.net
for /r c:\down %%i in (*.avi *.mp4) do move /y "%%~i" c:\TozakaruzoSaikonkara
108:デフォルトの名無しさん
17/06/17 22:08:13.20 hP08xqzx.net
>>106
ありがとうございます!
比較して、代入の引数iに違いがあるし、もう少し勉強します。
また、わからないことなど出てくるかもしれませんが、その時はよろしくお願いいたします。
109:デフォルトの名無しさん
17/06/17 22:53:57.13 4uF4heHb.net
参考に言っておくが () の中の引数なんだが、ワイルドカード以外は要注意だ
例えば (*.avi *.mp4 sukebe.jpg) とかにすると
各ディレクトリに sukebe.jpg が無くても強引にコマンド実行してエラーになったりする
110:デフォルトの名無しさん
17/06/19 21:06:26.56 HM1jnBNt.net
moroとかsukebeとか名付けがオッサン臭いんだがw
111:デフォルトの名無しさん
17/06/26 00:08:20.51 a4kJ2YgH.net
DIRコマンドでは*を使って検索みたいなことが出来ますね。
【コマンド】
C:\>dir /s /b C:\Windows\System32\host*
【実行結果】
C:\Windows\System32\hostname.exe
C:\Windows\System32\dllcache\hostname.exe
C:\Windows\System32\drivers\etc\hosts
他にもっと複雑な検索も出来るのでしょうか?
112:デフォルトの名無しさん
17/06/26 00:10:31.02 a4kJ2YgH.net
あと「DIR /?」で出てくるヘルプにはこの機能について触れられていないのはなぜなのでしょう?こんなに便利なのに。
113:デフォルトの名無しさん
17/06/26 00:24:40.04 1HPve1dM.net
ワイルドカードはDIR固有じゃないけど
114:デフォルトの名無しさん
17/06/26 00:27:25.02 q7GF7ZpN.net
>>111
windowsXPで恐縮なんだが、Windowsヘルプ(ヘルプとサポートセンター)では、
Dirの項目の説明の中で、ワイルドカード関係のものとして以下のものが書いてあったよ
解説
・複数の filenames を使用する
複数の filenames を使用できます。スペース、カンマ、またはセミコロンでファイル名を区切ります。
FileName でワイルドカード文字 (? と *) を使うと、ファイルのグループを表示することができます。
・ワイルドカードを使用する
ワイルドカード (? と *) を使うと、ファイルとサブディレクトリのサブセットの一覧を表示できます。
例
ドライブ C のすべてのディレクトリで、拡張子が .txt のすべてのファイルの一覧を表示するには、次のように入力します。
dir c:\*.txt /w/o/s/p
各ディレクトリにある拡張子が .txt のファイル名が、アルファベット順にソートされた一覧がワイド形式で表示されます。
画面単位で一時停止し、キーが押されると次の画面が表示されます。
115:デフォルトの名無しさん
17/06/26 01:37:25.73 q7GF7ZpN.net
>>111
つまりコマンドの内蔵ヘルプは簡略版ってことなんだ
それと、なんかちょっと検索してみたら
Windows10には「ヘルプとサポート」がないらしい
なのでオンラインでのコマンドラインリファレンス
URLリンク(technet.microsoft.com)
XPの「ヘルプとサポート」には
「コマンドラインリファレンス」の他にも、
「新しいコマンドラインツール」
「コマンドシェルの概要」(ここにパイプやリダイレクトの説明が載っている)
ってのがあったんだけどなあ
116:デフォルトの名無しさん
17/07/01 02:44:43.86 mwCfh4Ih.net
質問があります。
ちょっと事情があってすべての引数をダブルクオーテーションで囲って実行しなければならなくなりました。
例えばこんな感じで
"C:\Software\ffmpeg\ffmpeg.exe" "-i" "%~1" "-vcodec" "utvideo" "-acodec" "pcm_s16le" "%~dpn1_test.avi"
ffmpegでは正常に動くことを確認したのですが他の一般的なソフトウェアもこのような起動方法で動作すると考えてもいいのでしょうか?
117:デフォルトの名無しさん
17/07/01 03:37:58.17 QCoLM9eW.net
引数の仕様はそれぞれだが問題無い
118:デフォルトの名無しさん
17/07/05 22:31:01.85 9GxT9B4i.net
とあるファイルの中身の文字列を置換したいのですが、何かいい方法はありますでしょうか?
とあるファイルはtxtファイルではないですが、テキストエディタで開くと文字列が書いてあります。
119:デフォルトの名無しさん
17/07/05 22:46:04.03 R8zuGv9z.net
全部テキストならともかくそれ以外のバイナリファイル内の置換はcmdじゃ無理だろ
WSHとかPower Shellとかで探せ
120:デフォルトの名無しさん
17/07/06 00:29:11.58 l/JVwvz3.net
テキストファイルだけど、拡張子がtxtではないファイルのことです
121:デフォルトの名無しさん
17/07/06 01:41:06.31 vizsBHcK.net
findstr である程度のことはできるけど、置換の条件とかが複雑になってくるとしんどい。
外部コマンドが使用可能なら、onigsedとか、SEDを使った方が多少は楽。
122:デフォルトの名無しさん
17/07/06 02:34:32.14 VUvDmuBp.net
>>119
拡張子になんの意味があると思ってるの?
なんかそのレベルの知識だったら、メモ帳でも使った方がいいと思うよ。
123:デフォルトの名無しさん
17/07/07 17:03:51.39 peDYPYbs.net
>>119
ren Nullpo.unko Nullpo.txt
124:デフォルトの名無しさん
17/07/09 19:10:43.21 Gxva3cTk.net
バッチファイルからシリアルポートを簡単に読み書き出来る手段って無いですかね?
古くはCOM?を使う方法が有名ですがBluetoothなどで作られた仮想シリアルポート?には使えないようです
125:デフォルトの名無しさん
17/07/13 00:28:41.39 m+WJUz/m.net
シリアルポートってなんだ?RS-232Cとかか?
126:デフォルトの名無しさん
17/07/13 00:45:21.62 CfPNRtgi.net
>>123
232C→USB変換ケーブルみたいなのあったような
127:デフォルトの名無しさん
17/07/16 11:23:45.75 FHjtOHLZ.net
そもそもバッチファイルって何?
CでもBasicでもなく、メモ帳の拡張子をbatに変えるだけで良くて、
コマンドブロンプトとかいう、MS-DOSと何が違うのかわからないような画面で動いて、
何なの?
128:デフォルトの名無しさん
17/07/16 15:58:56.60 30vHB81v.net
CだってBASICだってメモ帳の拡張子を適当に変えれば行けますよ
129:デフォルトの名無しさん
17/07/18 02:02:06.89 Bi+xDIbE.net
「拡張子とは何か」から始めとけ
130:デフォルトの名無しさん
17/07/18 09:43:40.29 YNdL6SIO.net
>>126
>メモ帳の拡張子をbatに変える
notepad.exeの拡張子をbatに変えたら動かなくなりますよ
131:デフォルトの名無しさん
17/07/18 12:15:15.33 +17jTjCv.net
>>129
なんでメモ帳って書いてあるのにnotepad.exeをいじるわけ?
132:デフォルトの名無しさん
17/07/18 12:23:23.94 lxnTGpj5.net
そらメモ帳の実体はnotepad.exeやし
133:デフォルトの名無しさん
17/07/18 19:54:35.52 qQbuN+bc.net
>>130
お前の言う「メモ帳」とはnotepad.exeでない何か他のものなのか?
134:デフォルトの名無しさん
17/07/18 20:32:10.68 wtRY8Rgw.net
もう夏休みか
135:デフォルトの名無しさん
17/07/18 23:42:51.89 Wjn/rMX6.net
揚げ足の取り方が寒い。
136:デフォルトの名無しさん
17/07/19 00:03:00.46 oeGL8Gu+.net
>>126についていうなら、その辺のいい加減さが理解を妨げてると言える
137:デフォルトの名無しさん
17/07/19 00:19:58.81 wIP5zHZ/.net
とにかく>>126は色々とおかしい
どこから突っ込めばいいのかわからんくらいにアチコチおかしい
PC初心者板ならともかく、なぜム板にこんな人が居るんだ?ってレベル
迷い込んできたのか?
138:デフォルトの名無しさん
17/07/19 00:23:24.87 I6a60LYe.net
しかし誰もきちんと説明できないという
139:デフォルトの名無しさん
17/07/19 02:27:06.77 Gwnbk1WK.net
どこから説明始めたらいいのかわからん程だし
140:デフォルトの名無しさん
17/07/19 21:02:00.27 WMMf4PqS.net
説明はできないが
141:揚げ足は取れる、ということですね。
142:デフォルトの名無しさん
17/07/19 22:27:12.79 caLBuZR5.net
コピー系コマンドのコピー速度って
遅 copy < xcopy < robocopy 早
で良いですよね?
これはVista、7、10のどのOSでも同じでしょうか?
143:デフォルトの名無しさん
17/07/19 23:32:30.26 I6a60LYe.net
copyの方が早くね?4文字だし。
144:140
17/07/20 03:04:39.26 R4lBeVK+.net
>>141
コマンド打ち込むにも時間がかかりますから一理ありますね。copyは引数指定も直感的だし…
って常にコマンド手打ちする訳でもないですし!w
145:デフォルトの名無しさん
17/07/22 00:59:36.62 J1O+P69V.net
+.bat や ,.bat もOKだった
146:デフォルトの名無しさん
17/07/22 21:18:13.40 yBUCBb6t.net
プラスバッドって、何か格好いいな。
カンマバットはダセェけど。
147:デフォルトの名無しさん
17/07/23 16:18:49.88 sxzHAQSA.net
では、
£.bat
γ.bat
ラプラスバットと、ガンマバットでは、どうだろう?
148:デフォルトの名無しさん
17/07/29 01:24:32.19 ocuZvBLs.net
@.bat や =.bat
ファイルを作ることはできるが、実行しようとしてもコマンドプロンプトに無視されて実行できなかった
149:デフォルトの名無しさん
17/07/29 02:07:03.67 0L2d7SO5.net
@.bat はフルパスで C:\work\@bat ってするか、キャレットでエスケープして ^@.bat で実行できる
=.bat はフルパスでもダメだけど、キャレットでエスケープすればいける
150:デフォルトの名無しさん
17/08/01 00:45:45.45 7i1X54Qd.net
>>147
キャレットって何かわからなかったが、^をつけることなんですね
^@ や ^= でたしかに実行できました
151:デフォルトの名無しさん
17/08/10 19:56:28.38 gQNT5BPl.net
(^_^)
152:デフォルトの名無しさん
17/08/10 21:54:16.62 BFQhJ/Te.net
"@ とか "= とか
153:デフォルトの名無しさん
17/08/14 22:38:23.70 3xlVGOet.net
すみません助けてください
遅延関数を宣言してるところから、下記の親ディレクトリの名前だけ引くサブルーチンに
ファイルフルパス投げて、戻そうとしているのですが
for文のところでDEST_DIRに値が入らなくて困っています
windows7環境で遅延関数について調べているのですが
なんで値が入らないのかわからず。 %%Pをechoすると中身が表示されるのですが
それをSETするときに何をやっても入りません。。。助けてください
:GET_PARENTDIR
setlocal enabledelayedexpansion
SET PathLF=%1
SET PathLF=%PathLF:~0,-1%
SET PathLF=!PathLF:\=^
!
for /F %%P in ("!PathLF!") do SET DEST_DIR = %%P
endlocal && set DEST_DIR = %DEST_DIR%
echo %DEST_DIR%
exit /b
154:デフォルトの名無しさん
17/08/14 22:39:38.44 3xlVGOet.net
ああああ遅延変数でした
もうやだああぁ
155:デフォルトの名無しさん
17/08/14 23:55:08.58 pZiLFUe+.net
>>151
これって例えばc:\aaa\bbb\ccc\test.txtってファイルを投げたら
最終的にtest.txって文字を得たいの?
cccを得たいの?
156:デフォルトの名無しさん
17/08/15 02:10:26.85 F71LHla5.net
>>151
まずは
SET DEST_DIR = %%P
endlocal && set DEST_DIR = %DEST_DIR%
の空白がいけないのでは?
SET DEST_DIR=%%P
endlocal && set DEST_DIR=%DEST_DIR%
157:デフォルトの名無しさん
17/08/15 08:22:11.69 ltV5IdSe.net
>>154
後輩にその空白を入れられたことがある
「可読性を良くしようと思って…」って言ってたな
普通の高級言語やってる奴は=の前後に空白入れただけで不具合起こるなんて考えもしないわな
コマンドプロンプトはホント昔の仕様を引きずり過ぎだわ
158:デフォルトの名無しさん
17/08/15 08:51:21.42 J2u+qflL.net
setlocal enabledelayedexpansion使うとファイル名に!が入ってるとめんどくさいから極力使わないようにしてるんだけど俺だけ?みんなはどうしてる?
159:デフォルトの名無しさん
17/08/15 08:55:13.27 GzAS59pw.net
>>155
C言語で言うマクロ置換みたいなもんだからしょうがない
もう新規の奴はPowerShellに移行するしかない
160:デフォルトの名無しさん
17/08/15 10:13:39.94 x5EZUuTK.net
名前ソートで上に持ってきたいフォルダには名前の頭に!をつけてる
161:デフォルトの名無しさん
17/08/17 23:34:26.73 jGLnJoZN.net
スペースが入ったファイル名からスペースを取り除くには一行では無理ですか?
162:デフォルトの名無しさん
17/08/18 00:59:25.98 Oq4EZT3J.net
こんな感じ?
set "File=%~1" & ren "%File%" "remove=%File: =%"
163:デフォルトの名無しさん
17/08/18 01:00:23.41 Oq4EZT3J.net
間違えた
set "File=%~1" & ren "%File%" "%File: =%"
164:デフォルトの名無しさん
17/08/20 03:39:45.42 w/lVOYHU.net
バッチでよく使う pslist.exe はプロセス名が日本語だと間違える
pslist v1.4 sysonternals
165:デフォルトの名無しさん
17/08/20 16:32:29.32 7nn0chG1.net
フォルダD:\XXXX直下の、
AAAA、BBBB、CCCCの3つの隠しファイル(拡張子なし)を、
定期的にE:\backupフォルダにバックアップするためのバッチファイルを作りたい
フォルダXXXX以下には、YYYY、ZZZZというフォルダがあり、
この下にもAAAA、BBBB、CCCCと同名のファイルが存在するが、
それはバックアップしなくていい
copyコマンドでは隠しファイルはコピーできない
xcopyコマンドではサブディレクトリ以下の同名ファイルもコピーされてしまう
バッチファイルで処理するためにはどうすればいいのでしょうか?
できればアトリビュートはいじりたくないです
よろしくお願いいたします
166:デフォルトの名無しさん
17/08/20 16:35:22.92 T95gEh5X.net
>>161
誰もツッコミ無しなの?
167:デフォルトの名無しさん
17/08/20 16:53:03.09 vBwVL8I3.net
>>163
xcopyでAAAAなどのファイルを一つずつ指定してコピーするというのは?
168:デフォルトの名無しさん
17/08/20 17:25:05.34 7nn0chG1.net
>>165
実験してみたんですが、
xcopy D:\XXXX\AAAA E:\backup\
とすると、backupフォルダには、
AAAA
\YYYY\AAAA
\ZZZZ\AAAA
の3ファイルがコピーされちゃうんですよ
\YYYYと\ZZZZのはいらないのでどうしたもんかなと質問させていただきました
169:デフォルトの名無しさん
17/08/20 17:36:31.70 vBwVL8I3.net
>>166
こちらの方でもテストしたけど1ファイルだけコピーになるんだけどな
なんでだろ
170:デフォルトの名無しさん
17/08/20 17:43:47.57 7nn0chG1.net
>>167
テストありがとうございます
あれ?
なんか余計なスイッチ入れるとかしちゃってたかな?
今出先なんで帰ったら再度実験してみます
171:デフォルトの名無しさん
17/08/20 19:15:30.58 T95gEh5X.net
>>161
cd /d "%~dp1" & set "File=%~nx1" & call ren "%%File%%" "%%File: =%%"
>>163
cd /d "D:\XXXX"
for %%i in (AAAA BBBB CCCC) do xcopy /h /y "%%~i" "E:\backup"
172:デフォルトの名無しさん
17/08/22 19:19:28.49 rIu52qT/.net
以前こちらで聞いて試行錯誤しているのですが、何分初心者で四苦八苦しております。
そこでご教授願いたいのですが、
@rem 引数有無と引数名チェック
if "%USR_INPUT_STR1%"=="" goto ERROR
echo;%USR_INPUT_STR1%|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR
@rem URLのアドレスとHTMLを環境変数へ設定
set ADDR=%USR_INPUT_STR1%
for %%I in (%USR_INPUT_STR1%) do set HTML=%%~nxI
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
if not %ERRORLEVEL%==0 goto ERROR
@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=3 delims=, " %%I in ('type %HTML%^|find /I "m3u8"') do set TARGET=%%~I
ffmpeg -c copy "%TITLE%" -i
173: "%TARGET%" pause exit :ERROR echo 引数が無効のため処理できませんでした pause exit このままだと、ファイル名がUTF-8で文字化けしてしまいます。 これを、面倒なのでファイル名で出力したいと思ったのですが、正規表現が弱く全く前に進みません。 丸投げで申し訳ございませんが、どうか手直ししていただけませんでしょうか。 よろしくお願い致します。
174:デフォルトの名無しさん
17/08/22 20:10:25.50 uGuLhv+Q.net
powershellに切り替えたら?
175:デフォルトの名無しさん
17/08/22 20:50:12.77 1dHyDD35.net
>>170
よく分からないけどbat自体をUTF-8で書いてchcp 65001というのは?
176:デフォルトの名無しさん
17/08/22 20:52:58.84 rIu52qT/.net
>>172
それも考えたのですが、不特定多数のPCで使う機会があるので手間が増えてしまうなと思い諦めました。
そこで、URLからIDとなる文字列を抽出してそれをファイル名に使おうと考えました。
参考URL:URLリンク(www.openrec.tv)
この末尾の7cuVKOAY3lvの部分だけを、TITLEに代入したいと思ったのですが、思うようにいかなくて・・・。
177:デフォルトの名無しさん
17/08/22 21:10:23.56 rIu52qT/.net
結局、実行batのディレクトリ内にnkf32を導入し、
nkf -s --overwrite %HTML%
と書き加えて対処致しました
178:デフォルトの名無しさん
17/08/29 14:35:48.67 91TLAHUR.net
フォルダの中に、あああ_1.flv あああ_2.flv … あああ_100.flvのようなファイルがあるときに、あああ_1.flvをあああ_001.flvのようにリネームしたりできないんでしょうか
179:デフォルトの名無しさん
17/08/29 15:34:02.29 ZSKrJS0x.net
>>175
Flexible Renamer
180:デフォルトの名無しさん
17/08/29 16:50:10.59 iDduY4Qi.net
お~瑠璃ね~むで十分やぞ
D&D用のショトカも作れるしな
181:デフォルトの名無しさん
17/08/29 17:11:24.47 1aRkt9bd.net
>>175
「のようなファイルがあるときに」の条件がどこまでかわからないが
>>176が一番早いのは間違いない
182:デフォルトの名無しさん
17/08/29 20:06:42.61 KnTCuJQc.net
set "a=あああ_"
set "b=.flv"
setlocal enabledelayedexpansion
for /L %%i in (1,1,99) do set /a c=%%i+1000 & ren "!a!%%i!b!" "!a!!c:~1!!b!"
183:デフォルトの名無しさん
17/08/31 16:38:58.30 omILiWW+.net
>>175
pushd "%~dp1"
:LOOP
for /f "tokens=1,2 delims=_" %%a in ("%~n1") do (
set FNAME=%%a
set /a FN=%%b+1000
)
ren "%~1" "%FNAME%_%FN:~-3%%~x1"
shift
if not "%~1"=="" goto :LOOP
184:デフォルトの名無しさん
17/08/31 17:02:31.64 KsdTyPQv.net
>>180
変換の数字の前が_文字じゃないかもしれないし
_文字がファイル名の中に混じっている可能性もあるし
185:デフォルトの名無しさん
17/08/31 17:53:19.91 Vr+Gp9oD.net
どのスレでも一緒だが質問の要件が分かりにくいのはめんどうだな
186:デフォルトの名無しさん
17/08/31 18:00:47.56 kMuf1wHV.net
なんでか知らないけど他人に勝手にマルチポストされたけど>>175の質問は元のスレで解決したのでもういいです
187:デフォルトの名無しさん
17/09/03 22:03:48.56 BJjXydYg.net
cd \
pushd D:\abc
setlocal
popd
としても元の \ に戻らなかった
188:デフォルトの名無しさん
17/09/04 00:02:37.80 pBY/MKIa.net
>>184
そうならなきゃ逆にダメでしょ
setlocalでは(親の環境を引き継いだ)別の環境の上で実行されている
カレントを移動しようが環境変数を操作しようが元の環境には影響しない
pushd D:\abc
setlocal
endlocal
popd
または
setlocal
pushd D:\abc
endlocal
189:デフォルトの名無しさん
17/09/04 01:15:44.81 24unggVp.net
>>185
ありがとうございました
そういうことでし
190:たか
191:デフォルトの名無しさん
17/09/16 05:02:43.18 cRJ1WDqm.net
今さらバッチファイル入門て…
余計な被害者増やさずPowerShellにしろよ
これだからIT後進国は
超入門コマンドプロンプト:バッチコマンドで定型処理を行う (1/3) - @IT
URLリンク(www.atmarkit.co.jp)
017年09月15日 05時00分 公開
192:デフォルトの名無しさん
17/09/16 05:59:12.53 TbhIjs8j.net
>>187
このスレのタイトル見てから言えよ
それとも、お前は、自分が使ってないソフトのスレ行って
「別のソフト使え」って言って巡るのが趣味なのか?
193:デフォルトの名無しさん
17/09/16 06:09:12.67 NzFbxZfY.net
PowerShellに移行しようと思ったこともあるけどファイルをD&D出来ないから断念した
あと他人の環境で動くのか分からないから渡しにくいし
194:デフォルトの名無しさん
17/09/16 06:11:20.82 NzFbxZfY.net
まあbatに面倒臭いとこがあるのも理解できるけど
せめて正規表現と小数の計算くらいはあればよかったんだが
195:デフォルトの名無しさん
17/09/16 11:00:27.02 Nvo3nRRv.net
自分で使うにはPoweShellはめちゃめちゃ便利だけど
一般的に定着してるかというとそうじゃないし
196:デフォルトの名無しさん
17/09/17 11:17:50.05 jtG62g+O.net
PowerShell は起動が遅いから小さいバッチをループで呼び出すのには向いてないんじゃないかな。
いったんロードしたオブジェクトを関数形式で呼び出せばいいんだろうけどよくわからなくてめんどくさいし。
197:デフォルトの名無しさん
17/09/17 11:23:06.30 jtG62g+O.net
最近、フリーソフトとかの小さいやつの管理がめんどくさくなって
メニュー代わりにバッチファイルを使うことにしたんですよ。
全部をVHDに入れてマウントなんで、持ち運びは仮想ディスクファイル1個をコピーするだけ。
起動が素早いのがメリット。
アイコンが出ないのがデメリット。
アイコン出そうと思ったら全環境で共通のドライブ名に固定してショートカットを使ったらいいと思うけど。
プログラムの入ったフォルダ
Program Files 3
バッチファイルの入ったフォルダ
Program Link
[FirefoxPortable.bat]
set pathname1=%~d0\Program Files 3\FireFoxPortable52.0.2\FirefoxPortable\FirefoxPortable.exe
start "" "%pathname1%"
198:デフォルトの名無しさん
17/09/17 12:31:00.83 z++LvPT9.net
それだけならバッチ作るまでもなくハードリンクにすればアイコン問題も解決では
199:デフォルトの名無しさん
17/09/17 12:37:46.24 z++LvPT9.net
あ、すまんそれだと実行ファイルと同じフォルダのDLL読めないからダメか
200:デフォルトの名無しさん
17/09/18 00:06:56.51 AVBMNnfo.net
短いファイル名に関していくつか質問
1 短いファイル名はダブルクオーテーションで囲まなくても実行可能?
2 短いファイル名は取得して一ヶ月経っても変動せずにそのパスを実行出来る?
201:デフォルトの名無しさん
17/09/18 23:50:36.04 2dThcY7y.net
>>196
「1」は、多分可能
「2」は、他にファイルが出来なければが前提かと
「dir c:\*1」と「dir c:\*1 /x」を実行して挙動を確かめて下さい。
202:デフォルトの名無しさん
17/09/19 00:09:36.87 I5t298fo.net
少なくともNTFSではファイルの情報としてショートファイルネームも格納されるから
ファイルが存在したままある日突然名前が変わることはないはず
そのファイルを削除して似たようなロングファイルネームの別のファイルを作った時
同名だけど別のファイルが出来てしまう事はありえる
203:196
17/09/19 01:33:17.50 FIGNw+kF.net
レスありがとうございます。
ちなみに自分がやりたかったのは↓と同じケ
204:ースで自作のbatをタスクスケジューラに登録したいというものでした。 schtasksで半角スペースを含むパスを実行させたい (DOSプロンプト活用相談室LOG) http://fpcu.on.coocan.jp/dosvcmd/bbs/log/taskkillstart/at/4-0842.html "を\"と書いてエスケープさせるやり方もあるようですがそちらではbatにダブルクォーテーションで囲った引数を渡すと不可解な動作をすることがあり上手くいきせんでした。 batのパスにスペースを含んだ場合 起動しない batのパスにスペースを含まない場合 %~dp0を実行したときにbatのフォルダパスの頭にカレントディレクトリの文字列も追加される
205:デフォルトの名無しさん
17/09/19 02:17:59.79 Lhe/hdFe.net
mklinkやsubstを使って違う名前でアクセスするのはどうなのでしょう
うまくいくかどうかわかりませんが
ファイル名フォルダ名に空白や%^!みたいな記号があると困ることが多いですね
206:デフォルトの名無しさん
17/09/20 03:12:37.88 aIPv0JYK.net
>>199
この書き方に準じていないだけでは?
A Scheduled Task Does Not Run When You Use Schtasks.exe to Create It and When the Path of the Scheduled Task Contains a Space
URLリンク(support.microsoft.com)
Schtasks.exe を使用して、スケジュールされたタスクのパスにスペースが含まれている場合を作成するときにスケジュールされたタスクが実行されません。
URLリンク(support.microsoft.com)
失敗例
schtasks /create /tn "my task" /tr "c:\foldername containing spaces\script.bat arguments" /sc once /sd 07/29/2003 /st 10:01
成功例
schtasks /create /tn "my task" /tr "\"c:\foldername name containing spaces\script.bat\" arguments" /sc once /sd 07/29/2003 /st 10:01
207:196
17/09/20 06:44:59.65 w13Y3qRA.net
>>201
自分の説明が下手で伝わらなかったんだと思いますが、成功例の方の記述でパスにスペースを含むbatは起動できるのですがそのbatにダブルクオーテーションを含む引数を渡すと動作がおかしくなるのです。
引数にダブルクオーテーションを含まない場合は正常に起動できます。
208:196
17/09/20 07:01:29.72 w13Y3qRA.net
一応追記しておくと、おかしくなるのはタスクスケジューラから起動した場合限定で通常の起動では問題ありません。
呼び出すbat内の記述にミスがあるとかそういうのではないと思います。
209:デフォルトの名無しさん
17/09/21 11:18:59.39 WXZB4PjF.net
%CMDCMDLINE%はどうなってる?
210:デフォルトの名無しさん
17/09/21 18:15:09.28 X0F1M9Qy.net
argumentにダブルクォーテションがある場合もパスと同様に\"してる?
211:デフォルトの名無しさん
17/09/21 18:35:03.44 uKBRYTKY.net
test
212:196
17/09/21 18:38:58.99 uKBRYTKY.net
NGワードが含まれていたようなので他所に書きました
URLリンク(pastebin.com)
213:デフォルトの名無しさん
17/09/24 20:04:30.28 0vysq0yQ.net
基本的に引数の中の半角スペースはデリミタであり
そこより左に " が奇数個あればデリミタじゃなくなる
それに関しては \" とか ^" とかあっても関係ないんじゃね
214:デフォルトの名無しさん
17/09/25 14:27:46.65 aNTDK6ge.net
>>207
もう見てないかも知れないけど
schtasks /create /tn "test\test" /sc once /st 23:00 /tr "cmd /s /c \"\"C:\schtasks test\schtaskstest.bat\" hoge1 hoge2 \"ho ge3\" \"h oge4\"\""
これだと実行ファイルのパスにスペースがあっても問題ない
215:196
17/09/26 15:58:12.82 dvSxVtoZ.net
>>209
なるほど、直接batを登録するのではなくてcmdのほうを登録すれば良かったんですね
思いつ
216:きませんでした 助かりました、ありがとうございます
217:デフォルトの名無しさん
17/10/10 23:43:05.86 Z33TeZgR.net
文字コードがUTF8のテキストファイルが2つあるのですが
FCコマンドで差分を出力したところ文字化けしてしまいました。
何か良い方法はないでしょうか?
218:デフォルトの名無しさん
17/10/11 07:47:52.42 S/IKnpLv.net
メモ帳でSJISで保存する
219:デフォルトの名無しさん
17/10/12 16:57:41.08 c/LUECgg.net
なんでSJISなんだよ、unicodeにすればいいじゃん(Windows2000,XPは除く)
@echo off
set f1=%1
set f2=%2
if not defined f2 echo 引数1.2に比較するファイルパスを指定してください& goto :eof
if not exist %f1% echo ファイル %1 がありません& goto :eof
if not exist %f2% echo ファイル %2 がありません& goto :eof
start "" /min /wait cmd /u /c "chcp 65001 & type %1>u_%1 & type %2>u_%2"
chcp 932>nul
fc /u /n u_%1 u_%2
del u_%1 u_%2
220:デフォルトの名無しさん
17/10/12 18:25:29.18 c/LUECgg.net
start付けるとうまくいかないな
訂正
start "" /min /wait cmd /c "chcp 65001&cmd /u /c type %1>u_%1&cmd /u /c type %2>u_%2"
fc /u /n u_%1 u_%2
221:デフォルトの名無しさん
17/10/16 01:07:49.23 rrtzmh2c.net
バッチファイル作っておいて以下のようなフォルダの名前の変更を毎回ダブルクリック一発で済ませたいのですが
いろいろやってみたのですが、というほどの力もなく
お知恵お貸し下さい
処理前のフォルダ名一覧
1008安住紳一郎の日曜天国
10月15日安住紳一郎の日曜天国
10月15日爆笑問題の日曜サンデー (1)
10月15日爆笑問題の日曜サンデー (2)
処理後のフォルダ名
1008安住紳一郎の日曜天国
1015安住紳一郎の日曜天国
1015爆笑問題の日曜サンデー (1)
1015爆笑問題の日曜サンデー (2)
222:デフォルトの名無しさん
17/10/16 04:34:03.61 3Tj/cKOj.net
vbs 正規表現置換 ファイルリネーム
223:デフォルトの名無しさん
17/10/16 08:11:27.58 GL/w6Jlo.net
>>215
for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r "[0-9][0-9]月[0-9][0-9]日"') do call :SUB "%%~a"
exit /b
:SUB
set s=%~1
ren %1 "%s:~0,2%%s:~3,2%%s:~6%"
224:デフォルトの名無しさん
17/10/16 23:00:12.58 rrtzmh2c.net
>>216
ヒント下さったようでありがとうございます。でも、ゼロから書き始めることが出来ないんです。
>>217
私の求めていた動作です。これで完璧、ありがとうございます
ひと安心して解析に移ったわけです。。。
1.
"[0-9][0-9]月[0-9][0-9]日"
↑これでは22月33日にも対応というわけか、こやつめハハハ
フォルダ名の行頭部分は日付として機械的に生成される予想できる値ですので[0-9]で何の問題もないです。
勉強の為に、ここをいじってみました。
Month部分は、1 2 3...10 11 12、なら[1-12]で済むのかな。
ところが0埋めなので、01 02 03...10 11 12、となると、0[1-9]|1[0-2]、かな。
Day部分は、01 02 03...29 30 31、うーん0[1-9]|[1-2][0-9]|3[0-1]、となる。
これらを書き換えてみて、はい、動きませんでした。
今回のような自分用プログラムは動けばよいわけで、教えて下さった[0-9]で何の問題もない。
これ以上無駄な時間を掛けても&シンプルな方が可読性がよい
225:デフォルトの名無しさん
17/10/16 23:01:09.80 rrtzmh2c.net
2.
for a in ('標準出力 パイプ 標準入力') do
この部分、パイプの縦棒の左にくっついてる^は何者なのでしょう。。。初めて見ました。
アッ、日付部分が行頭だからか?いやfindstrに行頭オプションの/Bが付いてるし、そもそもパイプの左になぜ?
検索してみたのですがわからずここで冷や汗が出てきて
ウーンこれはなんなんだろう。そもそもメタ文字なのか銅貨さえわからない。
3.
そもそも何をしているのかというとradikoという�
226:vログラムでお気に入りのラジオ番組を録音しています。 AMラジオ番組ではCMのほとんどが過払い金のCMで聞きたくないのでスキップしたいのです。 ウォークマンで右ボタンを長押しすると早送り再生になるのですが、突然入るCMにイラッときて 長押しではなく短く押してしまって次のmp3ファイルに飛んでしまうのです。イライラッ! そこで1分ごとに分割してしまうことにしました。mp3directcutというソフトを使って切り出すことが出来ることを 知りました。そのうち、切り出し作業が面倒になって調べていくうちにコマンドラインでの実行も可能と分かり、 バッチファイル化の作業に掛かりました。出来上がったのは以下のような4行のバッチファイルです。 @echo on echo %* for /D %%a in (%*) do (mkdir "%%~na")&(copy 1min.mpd "%%~na".mpd)&(mp3directcut "%%~fa" /autocue "%~dp1%%~na")&(del "%%~fa")&(del "%%~na".mpd) pause 1min.mpdというのは1分ごとに切る指定が記述されているキューファイルです。同名の.mpdファイルがあるとそれを使ってくれるみたいなので、最初に元ファイルとして作っておきます。 1分ごとに切り分けられたものを再生してもけっこう大丈夫で、音楽だと気付く程度です。 いろいろ書いてしまいましたが頭が精一杯なのでとりあえずお礼申し上げ失礼ます
227:デフォルトの名無しさん
17/10/16 23:34:41.57 1IRdIkAf.net
>>219
^(キャレット)はエスケープ文字
これを付けずに実行すると、コマンドラインパーサで式評価時にパイプとして機能しちゃう
つまりfor文の途中にパイプが現れてそこで途切れちゃうことになる
やりたいことは、この行の最初の評価時には単なる|の文字として取り扱ってもらい
次の''で括ったコマンドの評価時にはパイプとして機能してほしいってわけ
1回の評価を→で表すとすると、
^| → |
^^| → ^| → |
^^^^| → ^^| → ^| → |
って感じに展開されていく(俺は3回まで使ったことがある)
%a%とかの環境変数の評価も似たようなもんだね
%%a%% → %a%
228:デフォルトの名無しさん
17/10/16 23:49:53.08 1IRdIkAf.net
環境変数の評価を遅延させる方法はつまり
%%temp%%と%^temp%との2通り書けるわけだ
(結果的に同じになるけど動作は違う)
229:デフォルトの名無しさん
17/10/16 23:57:55.48 1IRdIkAf.net
>>221
これはコマンドプロンプトでのことでbatに書くときはダメだね
230:デフォルトの名無しさん
17/10/17 00:03:17.05 bWF1v8hX.net
評価と展開がごっちゃになってる
俺の理解が浅い(忘れっぽい)せいだな
231:デフォルトの名無しさん
17/10/17 07:18:41.23 3NFRyYoM.net
ここで言ってる遅延と、いわゆる「遅延展開」は別物ですか?
232:デフォルトの名無しさん
17/10/17 09:05:40.81 fpIKg5e5.net
>>218
>Month部分は、1 2 3...10 11 12、なら[1-12]
[]は文字集合。[]内の文字のうち何れか1文字という意味。文字列は扱えない
[1-12]だと"1-1"と"2"という意味で1か2になる
01-12月、01-31日を表すのなら [01][0-9]月[0-3][0-9]日
[01]が0か1で十の位、[0-9]が0から9で一の位
桁の揃っている01なら可能だが1-12月はfindstrの貧弱な正規表現では1度に表すのは無理なので
1桁の場合と2桁の場合とを別けて検索文字列に設定する必要がある
ちょ、誰か
findstr /r "検索文字列" とfindstr /r /c:"検索文字列" の違いを教えてくれ。忘れた
233:デフォルトの名無しさん
17/10/17 10:39:26.27 AWu3veoe.net
>>225
解説ありがとうございます
とりあえず日付の所いろいろやってみてるのですがうまく行かないままです。
正規表現といわず直接文字列を指定して | が有効になる�
234:ゥどうかというところから実験してます。 for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r ""10月15日"|"10月16日""') do call :SUB "%%~a" pause exit /b :SUB rem set s=%~1 rem ren %1 "%s:~0,2%%s:~3,2%%s:~6%" findstrについての解説は検索で出てきた http://www.atmarkit.co.jp/ait/articles/0412/18/news018.html を読みました。読んだだけです。頑張ります
235:デフォルトの名無しさん
17/10/17 11:38:46.09 fpIKg5e5.net
>""10月15日"|"10月16日""
"で""を囲えないしfindstrの正規表現で|は使えない
findstr /?
まともな正規表現を使いたければvbsやPowerShell、Perlとか別のスクリプトに行ったほうがいい
バッチだと"&"や"%"とかダメ文字があるし凝った事をやろうとするといずれ行き詰まる
急がば回れ
236:デフォルトの名無しさん
17/10/17 22:45:54.56 bWF1v8hX.net
参考にWSHでもどうぞ(hoge.jsファイルとして作成)、コマンドプロンプトから
hoge "フォルダ名" (又は cscript //nologo hoge.js "フォルダ名")
又は、エクスプローラ等からフォルダをこのjsファイル(又はショートカット)にドロップして実行
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
if(args.length<1) throw Error("引数にフォルダを指定してください");
if(!fso.FolderExists(args(0))) throw Error("指定のフォルダが存在しません");
var folder = fso.GetFolder(args(0)), s = "", success = [], fail = [], name, name2, em, i, r;
var re = /^(\d{1,2})月(\d{1,2})日(.*)$/;
var func_new_name = function(all,mm,dd,ss) {
if(mm<1 || mm>12 || dd<1 || dd>31) return "";
return ("0"+mm).substr(mm.length-1) + ("0"+dd).substr(dd.length-1) + ss;
};
em = new Enumerator(folder.SubFolders);
for(em.moveFirst();!em.atEnd();em.moveNext()) {
name = em.item().Name;
if(re.test(name)) {
name2 = name.replace(re,func_new_name);
if(name2) {
try{em.item().Name = name2; success.push(" "+name+" -> "+name2);}
catch(e) {fail.push(" "+name+" -> "+name2);}
}
}
}
if(success.length>0) s = "リネーム成功\n"+success.join("\n");
if(fail.length>0) s += "\nリネーム失敗\n"+fail.join("\n");
WScript.Echo(s || "対象フォルダなし");
237:デフォルトの名無しさん
17/10/17 23:49:36.84 G9wCIPXR.net
もうPowerShellのRename-Item使おうぜ
個人用途だろうし制約ないでしょ
238:デフォルトの名無しさん
17/10/18 02:49:24.30 nuzaMfIv.net
覚えたてによく居るよね
要件無視した勝手な仕様でエラー判定とか結果ダイアログとかゴテゴテ実装してドヤ顔で持ってきちゃう子
239:デフォルトの名無しさん
17/10/18 02:57:26.06 O0s7d+Fx.net
まあダブルクリックで不意に実行されちゃうようなのは作りたくないよな
240:デフォルトの名無しさん
17/10/18 07:04:24.46 G1+K6kx+.net
>>215 無理やりバッチファイルの例
for /d %%i in (*) do set "a=%%~nxi" & call :w
goto :eof
:w
setlocal enabledelayedexpansion
set "e=m" & set /a b=0,m=0,d=0
:x
set "c=!a:~%b%,1!"
if not defined c goto :eof
for /L %%j in (0,1,9) do if "!c!"=="%%j" set /a !e!=!e!*10+c & goto y
if not
241:"!c!"=="月" goto z if not "!e!"=="m" goto :eof if !m! gtr 12 goto :eof set "e=d" :y set /a b+=1 & goto x :z if not "!c!"=="日" goto :eof if not "!e!"=="d" goto :eof if !d! gtr 31 goto :eof set /a f=m*d,m+=100,d+=100,b+=1 if !f! gtr 0 ren "!a!" "!m:~1!!d:~1!!a:~%b%!"
242:デフォルトの名無しさん
17/10/18 22:17:20.50 on6I0HDV.net
>>231
うちの現場のバッチは例え内部で使わなかろうが最低1つは必ず引数を渡す仕様になってる。
そしてそれが渡されなかった場合は処理せずに終了する作りになっている。
理由は誤ってダブクリしちゃった場合の対策なんだってさ。
243:デフォルトの名無しさん
17/10/18 22:23:22.61 hY2xT5yc.net
batって大体はD&Dして使うようなの書いてるな
244:デフォルトの名無しさん
17/10/19 01:03:03.64 cgLUQcTs.net
>>230
なんか癇に障ったみたいだけど、言い訳すると
俺は、質問者によって回答内容を変えてる
今回の質問者は初心者だと感じたし、さらには細かい拘りを持っているように見受けられた
(13月32日なんて作らないだろうし、もしあったって1332に変換されて悪いことはないと思う)
色々と手を加えて試行錯誤することが好きなんだろうなって思ったから
役に立ちそうな追加部分を記述した
それに1レスで書く分には、数行増えようが関係ないだろうと思ったしね
245:デフォルトの名無しさん
17/10/19 08:32:22.21 ny4cf+Vz.net
>>233
なるほど
246:デフォルトの名無しさん
17/10/19 22:12:55.60 JROgBEvY.net
ザ・ワールド、時よ止まれ。
247:デフォルトの名無しさん
17/10/20 03:00:35.66 1Na2h1P4.net
キッティングの自動化をしたいんだが、参考になるサイトない?
248:デフォルトの名無しさん
17/10/20 03:00:59.71 1Na2h1P4.net
対象のレジストリ見つけるとかめんどい
249:デフォルトの名無しさん
17/10/20 23:41:00.84 aZN6SiIl.net
どの程度の自動化?
250:デフォルトの名無しさん
17/10/21 08:56:40.19 Nsvn2WYb.net
>>238
何を自動化するん?
251:デフォルトの名無しさん
17/10/21 16:42:48.10 DofUW9OG.net
そんなんツールが出てるんだからその説明でも読めよ
252:デフォルトの名無しさん
17/10/21 18:43:14.12 TBS9tbdH.net
一発で、ファイアウォールの受信規則とかインターネットオプションとか
253:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 07:51:26.89 eb/3UN8i.net
>>215
$before = ls -Directory | Where-Object { $_ -match "^\d+月\d+日" }
$after = $before | foreach { $_.Name -replace '^(\d+)月(\d+)日', '$1$2' }
$idx = 0;
$before | foreach {
Rename-Item -WhatIf $_.FullName $after[$idx];
$idx++;
}
PowerShell で書いたので、cd で、そのフォルダへ移動して実行して。
-WhatIf が付いているので、本当には実行せずに、結果だけを見れる。
本当に実行する際は、-WhatIf を削除して実行して
配列 $before には「02月03日」などで始まるフォルダだけを、入れる。
配列 $after には「02月03日」の部分だけを「0203」に変換した、フォルダ名を入れる
Rename-Item で、該当する全フォルダ名を変換する
254:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 14:53:59.01 1YRZU7Jo.net
問題は、月を01~12まで、日を01~31までのチェックを入れることだけどね
255:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 16:29:48.93 rLFHcAK9.net
>>244
ls <directory-name> -directory | ren -newname {$_.name -replace '^(¥d+)月(¥d+)日', '$1$2' }
lsの-filterやwhere-object使ってもいいけど
こ
256:の例の場合は不要だと思うよ
257:デフォルトの名無しさん
17/10/23 07:20:31.59 A3jhOkfm.net
ls -directory | ren -WhatIf -newname {$_.name -replace '^(\d+)月(\d+)日', '$1$2' }
上記で、where-object が無いと、
変更されないフォルダまで、表示されるのが気持ち悪い
258:デフォルトの名無しさん
17/10/23 22:30:10.89 TV21zs/8.net
Windows7SP1では、Get-ChildItemに-directoryオプションは無いんでエラーが表示された
調べたら、3.0以降でこのオプションが付いた模様
この際なので、5.0,5.1をインストールした
Windows7の人の参考まで
259:デフォルトの名無しさん
17/10/24 18:41:12.61 QQrV41zo.net
PowerShellのスクリプトファイルの拡張子は普通.ps1を使うが
デフォルトではファイルの実行を許可してないし、
また許可後もダイレクトにファイル名を指定しても実行できない
って保険かけすぎで入門者には敷居が高いだろと思わないでもないなあ
>>247
where-objectを入れてみた
(まだ2時間ぐらいしかやってないんでもっといい書き方があるかも)
$re='^(\d+)月(\d+)日';ls -directory|? name -match $re|ren -whatif -newname {$_.name -replace $re,'$1$2'}
このスレ的にはアリアス使うなら、lsよりもdirが合ってる気もするけど
260:デフォルトの名無しさん
17/11/03 20:22:18.43 +gpl8JNW.net
ここで聞くべきか迷ったのですが…
自分のマシンからリモートデスクトップで接続できるサーバー(確かWin2008R2)があって
そのサーバーと同じネットワーク内にクライアント端末(Win7)があります。
そのクライアント端末のプロセスをリモートデスクトップで接続したサーバーから確認することは可能でしょうか?
(サーバーには管理者権限で接続しています)
要はクライアント端末でtasklistコマンドを打った結果が見たいのですが。
ちなみにクライアント端末はDHCP設定なので起動のたびにIPアドレスが変わります…
今は1日に何度も遠くにあるクライアント端末まで行ってプロセスを確認しています。
1回だけ行ってIPアドレスをメモるぐらいなら全然構わないので何か方法があれば教えて下さい。
261:デフォルトの名無しさん
17/11/03 21:42:45.24 91m0YuAi.net
クライアントに自分のタスクリストをファイルを記録する周期ジョブを作成しておく
必要であれば暗号化しておく
そのファイルをメールで自動送付するようにしておくか、
クライアントにwebエリアがあればそこに置きこちらから見にいく
262:デフォルトの名無しさん
17/11/03 21:52:08.46 z1gogpom.net
>>250
サーバから tasklist /s クライアント端末名 (/u user /p pass) を実行では見れないんですか?
ファイアウォールの設定が必要かもしれませんけど。
263:デフォルトの名無しさん
17/11/03 22:47:57.34 +QQUmgGP.net
>>250
1) 他のPCのプロセス状態を知りたい
2) DHCPで設定されているPCのIPアドレスを知りたい
ってことでいいかな
1) はtasklist の /s オプションで知りたいPCのIPアドレスを指定すれば行けるはず
ただし事前にPC側に設定が必要
かつPCにログインできる情報が必要
2) は
2-1) 直接見に行ってipconfigで確認する
2-2) MACアドレスわかってるならサーバーからそのネットワークアドレス全体にpingを打ちつつarpコマンドで相手のMACアドレス確認していけばいい
2-3) DHCPサーバーを管理してるならPCのIPアドレスを確認する方法があるかも、まあそれならPCのIPアドレスを固定した方がいいかも
2-4) >>251みたいな方法で定期的にIPアドレスを通知してもらう
264:250
17/11/04 18:18:26.62 HSP2f8JH.net
みなさん情報ありがとうございます。
来週になったらとりあえず>>252さんの方法を試してみます。(一番手軽なので…汗)
それでダメな場合は一日一�
265:シ接IPアドレスを確認しにいく方式にします。 というのもpingのブロードキャストは現場のルールで禁止されてるっぽいので。 クライアント端末も特別な用途のためのものなのでタスク作ったり何かを仕掛けるのは厳しそうです。 仕掛けられれば業務はすごく楽になるんですけど「セキュリティ上問題が…」とか言われて突っぱねられる可能性大です。>< 尚、pingブロードキャスト以外の方法でIPを知る方法については自分でも調べてみます。 どうもありがとうございます。助かりました!
266:デフォルトの名無しさん
17/11/04 18:30:41.27 sTeHaJ1X.net
>>254
>>252-253に書いてあるけど事前にクライアント側の設定しないとtasklist /sでプロセス情報見れないけど、そこは大丈夫なの?
267:デフォルトの名無しさん
17/11/05 10:20:45.02 rFS24mxQ.net
set infilenm=001.txt
set outfilenm=002.txt
set beforestr=""""
set afterstr=""
type nul >%outfilenm%
setlocal enabledelayedexpansion
for /f "delims=" %%A in (%infilenm%) do (
set line=%%A
echo !line:%beforestr%=%afterstr%!>>%outfilenm%
)
endlocal
001.txtからダブルクォーテーションを削除して002.txtに保存したいだけなんですが、
3行目と4行目の表記がわからず、考えられる限り書き直して、うまくいきません。
あるいは別のBATでもいいのですが教えてください。
268:デフォルトの名無しさん
17/11/05 11:42:01.62 vm51NJQ8.net
>>256
set beforestr=^^"
set afterstr=^^
でどうかな?
269:デフォルトの名無しさん
17/11/05 11:56:26.30 vm51NJQ8.net
ただ001.txtのデータ次第でうまくいかない場合があるんで
別のスクリプト言語(PowerShellやWSH等)で書いたほうがいい
270:256
17/11/05 12:18:29.39 rFS24mxQ.net
>>257
>>258
素早いお答えありがとうございます。
>>257
>set beforestr=^^"
>set afterstr=^^
ダブルクォーテーション消えました!
ありがとうございました。
271:デフォルトの名無しさん
17/11/05 13:20:27.79 vm51NJQ8.net
>>259
どういうことに使うのか知らないけど、大切なデータなら止めとくべき
改行だけの行が消えるのは知ってると思うけど以下のような行があると(回避は可能だが)
ab!cd!ef
a! "b ^
272:デフォルトの名無しさん
17/11/05 13:40:33.57 rFS24mxQ.net
>>260
ご心配ありがとうございます。
大丈夫です。ものは、<a href とかのhtmlタグで作成したリンクリストで、
正規表現とかエスケープっぽい記号等はなく、
そもそもプライベートファイルなので、これで素早くリストができて万々歳です。
273:デフォルトの名無しさん
17/11/06 15:18:34.73 K1roLwuw.net
>>260 これじゃダメか?
ていうかダメな例を教えてほしい
for /f "delims=" %%i in (1.txt) do (
set a=%%i
setlocal enabledelayedexpansion
echo !a:^"=!>>2.txt
endlocal
)
274:デフォルトの名無しさん
17/11/06 15:59:22.60 K1roLwuw.net
半角スペースだけの行は化けるな
275:デフォルトの名無しさん
17/11/06 19:12:27.47 Mdq5cGE3.net
echo,とか、echo;とかで
276:デフォルトの名無しさん
17/11/06 23:15:25.56 RrRem/45.net
バッチファイルに渡された引数が1つなのか2つなのかを判定したいのですが
どのように記述すれば良いのでしょうか?
以下ではダメでした。
if defined %2 echo 引数は2つです else echo 引数は1つです
277:デフォルトの名無しさん
17/11/07 01:14:40.14 xsgE2wk0.net
if not '%2=='
278:デフォルトの名無しさん
17/11/07 07:09:27.79 4pg/kk0r.net
>>264 ありがとう
for /f "delims=" %%i in (001.txt) do (
set "a=%%i"
setlocal enabledelayedexpansion
set "a=!a:"=!"
echo.!a!>>002.txt
endlocal
)
これで空行以外は完璧かな?
279:デフォルトの名無しさん
17/11/07 10:05:04.55 1287flJj.net
>>262の奴で
"echo "を"echo."にするとダメなのに"echo,"にするとOKなのは何故なんだぜ?
今まで、ピリオドとカンマ、セミコロンに違いがあるとは思ってなかったから
ずっとピリオド使ってたのに
280:デフォルトの名無しさん
17/11/07 22:51:26.28 4pg/kk0r.net
>>267
"eol=" を指定しないと行頭文字が ; だと読み飛ばす
"delims=" を指定しないと行頭の空白が無くなる
両方同時に指定する方法はあるのか?
281:デフォルトの名無しさん
17/11/08 00:22:28.07 X1Aytah6.net
for /f delims^=^ eol^=
282:265
17/11/08 00:40:11.94 pQrS+Zxc.net
>>266
バッチリでした!THANKS!
283:デフォルトの名無しさん
17/11/08 19:40:30.74 VTzaN0jn.net
>>268
「,」「;」「=」は特別区切り文字だから。
例えば、C:\直下に「a」ってフォルダ作って
「b.cmd」
for /f %%a in ('echo,b') do echo,%%a
「b b.cmd」
echo;c %1
pause
のバッチ作成して、コマンドプロンプトで「C:\a」に移動してから
「b.cmd」を実行すると、()の中の「,」が消えた状態で表示される
「b b.cmd」を実行すると、「b.cmd」が実行される
「"b b.cmd"」を実行すると、「b b.cmd」が実行される
今度はファイル名を指定して実行で
cmd /c "C:\a\b b.cmd"
cmd /c "C:\a\b b.cmd" dを実行すると、pauseで止まるけど
cmd /c "C:\a\b b.cmd" "d"を実行すると、一瞬で終わる
cmd /c,"C:\a\b b.cmd" "d"なら動く
結構知られていないんだよね。
284:デフォルトの名無しさん
17/11/08 22:40:59.50 ZHWfUJ7q.net
>>270 ありがとう。完全に動作しました
そもそも eol の既定値が ; だとかヘルプに書いてないぞ
ちなみに "eol=" とすると eol が空になるのかと思ったら
今度は行頭に " があると読み飛ばすようです
何なんだ、これは。for 文のバグですかね
285:デフォルトの名無しさん
17/11/09 12:26:56.09 NEfZ8eBs.net
@echo off
prompt $g
set a=/?
set b=exe
set c= off
echo on
echo,%a%
echo;%a%
echo.%a%
echo.%b%
echo.%c%
echo
pause
286:デフォルトの名無しさん
17/11/10 12:50:53.03 5BeFn7Xg.net
一時的なwindows資格情報の付与
付与→(再起動)→ポップアップを閉じるまで作業→(再起動)
の流れをバッチ実行一発で済ませたいと思ってる。
(○.bat)
cmdkey 書き込み
copy **.batを配置
schtasks 再起動後のタスク登録(**.bat実行)
shutdown 再起動
↓ (ログイン)
(**.bat)
echoでmsgbox表示(閉じるまで待つ)
cmdkey /delete ←ここで資格情報が消えない
schtasks /Delete タスク消去
del /f "%~dp0 自己消去
タスクは一応highest
タスク実行だとcmdkey通らないとかある?
bat素人で何が原因で消えないのかわからない・・・
ポップアップ表示中にcmd開いてcmdkey打つとちゃんと消える
287:275
17/11/10 18:22:22.05 5BeFn7Xg.net
回りくどい方法ですが自己解決できました。
.vbsにcmdkey /deleteを入れ
cmdの管理者権限起動用ショートカットを作成
schtasks からhighestをぬいて、管理者権限でcmdを再起動
vbsを実行で資格情報を消すことができました。
288:デフォルトの名無しさん
17/11/11 23:58:13.74 Smy5DbHD.net
copy /b 1.mp4+2.mp4 3.mp4
上記で結合した3.mp4の動画に2.mp4の内容が追加されないのですがなぜかわかりますか?
3.mp4のファイルサイズだけは1.mp4+2.mp4の容量になっています
すぐ出来ると思ったのにつまづいた泣
289:デフォルトの名無しさん
17/11/12 01:15:27.00 1rXZudmc.net
>>277
ちゃんと結合されている
バイナリで結合してフォーマットが1.mp4の分しかないだけ
コマンドプロンプトでなく動画フォーマットの勉強しろ
290:デフォルトの名無しさん
17/11/12 01:38:03.29 /fk063EO.net
>>278
ありがとうございます
出直します
291:デフォルトの名無しさん
17/11/12 14:54:34.48 GpB3XqQ3.net
動画形式の勉強など、自分でやるものじゃない
動画編集アプリを使うべき
292:デフォルトの名無しさん
17/11/12 14:57:17.00 43gC7oaU.net
今の編集アプリだとmp4
293:再エンコしなくてもそのまま繋げられるのかな?
294:デフォルトの名無しさん
17/11/12 15:08:29.51 MOg5phwx.net
>>280
バッチから結合を指示できる動画編集アプリよろしくね
295:デフォルトの名無しさん
17/11/12 15:14:20.67 Xj6DjuPw.net
ffmpegでええやん
296:デフォルトの名無しさん
17/11/20 14:42:11.56 rhJshzCP.net
64bitOS環境
バッチ1つでWOW64内のcmdで実行する方法ってありますか?
297:デフォルトの名無しさん
17/11/20 15:06:54.45 rhJshzCP.net
すみません普通にSTARTで呼んでできました…
298:デフォルトの名無しさん
17/11/22 13:08:53.67 i4qRIFe0.net
呼び出し元バッチに戻る終了方法を追加してほしい
exit /B だとcmdを終わるだけ戻らない
call で呼び出さなくても戻る機能をつけてほしい
exit /r や return文で
299:デフォルトの名無しさん
17/11/23 17:36:40.78 cAVsYuht.net
startに待つオプションあるだろ
300:デフォルトの名無しさん
17/12/06 10:57:13.74 RImq1PQL.net
>>281
昔から無劣化で繋げられるけど??
301:ファイルアクセス監視
17/12/23 19:00:05.09 Jw1Bivzx.net
ダウンロードしたローカルアプリ(Jane Styleなど)が
重要な場所のローカルファイルから情報を盗もうとしてないかどうか念のため監視したいのですが、
URLリンク(technet.microsoft.com)
このdosで使える handle は出力ファイル名の日本語が文字化けするんですが、何かいい方法ないですか?
文字化け以外に関しては非常に便利です
出力をdosで加工してエクスプローラーのログを除外して、ユーザー+プロセス+ファイル名が初登場の時だけ出力してます
これでもし見慣れないファイルアクセスがあったら目立ちます(GUI系はリアルタイムで消えるので)
302:デフォルトの名無しさん
17/12/23 22:54:57.75 FPRjmoIB.net
ファイル名のようなシステム要件には、半角英数字だけを使う。
半角空白も使うな。Mac でバグる
すべてのアプリの開発者が、多国語のファイル名では、テストしていないから、
多くのアプリでバグる
特に、書庫を使う、圧縮解凍アプリでバグる
303:デフォルトの名無しさん
17/12/24 08:43:36.04 WeE5WMFr.net
echo.
で空行を表示できると知りましたが
この「.」には何の意味があるのでしょうか?
304:デフォルトの名無しさん
17/12/24 15:38:49.19 9EARh1KB.net
>>291
意味を考えてはいけません。調べてませんが、英語のピリオドなので文字列なしで終わりという意味合いからそうしたのでしょう。
305:デフォルトの名無しさん
17/12/24 15:51:26.20 nsKMF0PM.net
echoの直後の文字列は出力されないんだっけ?
「.」の以外の文字列でも空行になるけど1番問題が起きにくいとかそんなのかな
306:デフォルトの名無しさん
17/12/24 18:22:33.52 T/PAdelQ.net
ちょっと前にその辺の話が出てた
>>264-274
307:デフォルトの名無しさん
17/12/26 01:03:48.59 9+DFjrUc.net
特別区切り文字というものがあるなんてここで初めて知ったんだけど…(本当かどうかはまだ確かめていない)。
もはや紙媒体で信用できる会社からの体形的な出版物が無いのよね。
…ある??
308:デフォルトの名無しさん
17/12/26 01:08:10.71 NGPwifm5.net
こんなのは仕様じゃなくて実装上の結果にすぎない
undocumennt specと言ってもいいが、正式な本に仕様として載るようなもんじゃないと思う
309:デフォルトの名無しさん
17/12/26 01:23:11.58 9+DFjrUc.net
>>296
そりゃ分かるんだけど…。
UNIX の bash だっておかしいところが結構あってさ。
でも「構文解析が未熟な時代、全てを(記号ですら)コマンドだと置いた結果」という説明の仕方ができるそうな。
C言語の仕様だっていい加減後付けが多い。でも説明を試みた結果がANSI。無理が多いけど。
Windows界隈ってそういうのが貧しいと思う。
スレ違いだけど、PowerShell も Core とか言い出してからなんかおかしくないか?
310:デフォルトの名無しさん
17/12/27 01:13:01.79 1X8kZn43.net
bashはかなーり最近のプロダクトだと思うのだが
311:デフォルトの名無しさん
17/12/27 19:45:46.24 8XzWQMmb.net
>>297
特別区切り文字という言葉はアレだけど
cmd /? で表示されるヘルプの最終行に
=;, は特別な文字として列挙されてますよ。
312:デフォルトの名無しさん
17/12/28 06:04:09.70 HvFHYdEd.net
>>297
要はさんざん検証して挙動を確認しないと恐くて使えないってこったなw
313:デフォルトの名無しさん
17/12/28 07:32:44.10 psxJdr/O.net
関係ない話ですまんが
いまだに cmd /? の表示が変だな、一部重複してる
マイクロソフトは直す気が無いのか
たぶんNTの頃から変なんだが
314:デフォルトの名無しさん
17/12/28 08:43:15.72 V28V958v.net
バグレポートに誰も上げていないか、
あるいは上げられていても優先順位がものすごく低いのでしょう。
315:デフォルトの名無しさん
17/12/28 18:35:17.03 QlD4+lUL.net
>>302
非成長分野、非収益持ち出し分野とみなされて、最低限の人数しかいないのでは
おまけに優秀なのは来ない
316:デフォルトの名無しさん
17/12/28 19:17:17.28 uuf5XAZw.net
優秀な奴はさらっと変更して賞賛されるけど、
そうじゃない奴がさらっと変更すると、
勝手なことすんなって怒られるんだよな。
317:デフォルトの名無しさん
17/12/28 22:46:38.96 8hIgR6GI.net
bash が最近のプロダクトだとか…ヨボヨボの痴呆が入ったおじいちゃんか?
UNIX で bash が出たのって 20世紀なんだが。
>>299
これのことか?明らかに違う。
> 引用符が必要な特別な文字は次のとおりです:
> <スペース>
> &()[]{}^=;!'+,`~
>>300
自分が新規で書けるなら VBScript でいい。
「これは例外、あれも例外、それも例外」なブツなんか触りたくない。
そんな時間があるなら生産的な言語に費やしたい。
触らざるを得ないからイラつく。阿呆か。
PowerShell は Windows の自動化から管理系を抜き出した方向に行こうとしているので何だかねぇ…
318:デフォルトの名無しさん
17/12/29 00:43:01.22 oAr+Y8wr.net
>>305
GNU後の新造品じゃねーか。モダンもいいところだろ。
歴史を知らないバカとは話が出来ないってのは本当だな。
319:デフォルトの名無しさん
17/12/29 07:36:55.45 kfbFSvw+.net
今時VBScriptとか言ってる老害の相手するなよ...
320:デフォルトの名無しさん
17/12/29 08:54:48.93 oAr+Y8wr.net
年寄りのくせにGNU前を知らないんだとしたら、死んだ方がいいね。
321:デフォルトの名無しさん
17/12/29 10:58:34.56 dNvcaBYU.net
VBScriptは依然として結構イケると思うけどな
322:デフォルトの名無しさん
17/12/29 14:50:59.06 Xr0syokO.net
真面目にそう思ってるならちょっとヤバイぞ
323:デフォルトの名無しさん
17/12/29 17:11:52.20 oAr+Y8wr.net
VBAと混同してる人がいるようだ
324:デフォルトの名無しさん
17/12/29 23:12:55.18 1POkgVP3.net
>>298
はあ?
325:デフォルトの名無しさん
17/12/30 17:45:4
326:8.22 ID:RVllgMXp.net
327:デフォルトの名無しさん
18/01/01 14:25:38.32 TmlLnuaw.net
>>301-302
コマンドのバグ ⇒ 全世界のユーザーに影響出るから下手に直せない
コマンドのヘルプの文言誤り ⇒ 優先度低いのでなかなか直さない
ってことかなるほど。
328:デフォルトの名無しさん
18/01/03 18:47:59.00 G1jkbehM.net
>>313
cscriptで自身を実行する外見バッチ中身WSHみたいなんもあるにはあるし…
329:デフォルトの名無しさん
18/01/03 20:04:05.34 NAv6VFfd.net
>>313
元を辿ってみると、>>297が話を逸らしたせいだ
そこからどんどん逸れてvbに行き着いた
>>315
batに埋め込めるのはjscript(条件コンパイルの構文がbatとうまい具合にかみ合った)だけでvbscriptは無理
330:デフォルトの名無しさん
18/01/03 20:12:05.39 lLEkaf6s.net
>>316
> vbscriptは無理
ちょっとはググれよ
URLリンク(blogs.yahoo.co.jp)
331:デフォルトの名無しさん
18/01/03 21:17:45.06 NAv6VFfd.net
>>317
wsfの手があったか、あとjsでもスクリプトエンコードで書けばなんとかなるね
332:デフォルトの名無しさん
18/01/13 16:23:41.90 t3TbTPGI.net
powershellで似たような事はできませんか?
1ファイルにしたくて
333:デフォルトの名無しさん
18/01/13 16:32:17.66 9pJBMU57.net
>>319
【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net
スレリンク(tech板)
334:デフォルトの名無しさん
18/01/18 18:41:19.43 lAsosfYH.net
どうしても分からないので質問致します。
@echo off
@rem バッチファイルのディレクトリに移動
cd /d %~d0%~p0
set USR_INPUT_STR1=URLリンク(www.openrec.tv)
@rem 引数有無と引数名チェック
if "%USR_INPUT_STR1%"=="" goto ERROR
echo;%USR_INPUT_STR1%|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR
@rem URLのアドレスとHTMLを環境変数へ設定
set ADDR=%USR_INPUT_STR1%
for %%I in (%USR_INPUT_STR1%) do set HTML=%%~nxI
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
if not %ERRORLEVEL%==0 goto ERROR
@rem Shift-JISに文字コード変換
nkf -s --overwrite %HTML%
335:デフォルトの名無しさん
18/01/18 18:41:39.14 lAsosfYH.net
set TARGET=%TARGET:playlist=chunklist%
@rem ffmpegで動画吸い出し
ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
@rem 最後にcurlで出力したソースファイルを削除
@rem for /R %%f in (*.) do del /Q "%%f"
pause
exit
:ERROR
echo 引数が無効のため処理できませんでした
pause
exit
このようなbatファイルを作ったのですが、どうしても最後に
sourcefile=URLリンク(station303.openrec.tv) Invalid argument
と無効な引数と言われてしまい動画の吸い出しが出来ません
完全に手詰まりなため、丸投げにはなってしまいますがご教授いただければと思います
よろしくお願いします
336:デフォルトの名無しさん
18/01/18 19:11:35.69 r+5+UL4/.net
>>322
とりあえず最初の行を
rem @echo off
にしてどこでエラーになってのか確認しろ
337:よ
338:デフォルトの名無しさん
18/01/18 19:15:53.38 pm/tv2ru.net
>>322
これ途中の処理抜けてない?
TARGETにURLが入らないんだけど
339:デフォルトの名無しさん
18/01/18 19:34:30.33 pm/tv2ru.net
170のやつを適当に書き直したら動いたよ
for /F tokens^=2^ delims^=^" %%I in ('type %HTML%^|find /I "data-sourcefile"') do set "TARGET=%%~I"
340:デフォルトの名無しさん
18/01/18 19:58:03.19 lAsosfYH.net
>>322の最初が抜けてました・・・
@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=* delims=data-file= " %%I in ('type %HTML%^|find /I "playlist.m3u8"') do set TARGET=%%~I
341:デフォルトの名無しさん
18/01/18 20:06:19.33 lAsosfYH.net
>>325
ありがとうございます・・・
エラーを見たのですが、なぜかsourcefile=が付いてしまっていました
何度もありがとうございます
342:デフォルトの名無しさん
18/01/29 01:16:37.30 s5lQXlw3.net
echo abc 1>x1 1>x11 2>x2 3>x3
とするとDOS窓が応答しなくなった
x11 x2 x3 ファイルができるが x1ファイルはできない
343:デフォルトの名無しさん
18/01/29 14:21:26.57 e8Iu9+Yp.net
compフォルダ配下にはa,b,c,…ってフォルダがあって、
そのフォルダの中にはzipとrarの圧縮ファイルがある
compopenってフォルダを作って、compの中のフォルダ階層は変えないで、compopenフォルダ内のaやb,cのフォルダにそれぞれすべて展開させたいときってどうするの?
zipやrar毎にフォルダ作って展開させたい
D:/
├comp/
│ └ a/
│ └ 111.zip
│ └ 222.zip
│ └ b/
│ └ xx1.rar
│ └ xx2.rar
│ └ c/
│ └ ttt.zip
│ └ rrr.rar
D:/
├compopen/
│ └ a/
│ └ 111/
│ └ 222/
│ └ b/
│ └ xx1/
│ └ xx2/
│ └ c/
│ └ ttt/
│ └ rrr/
344:デフォルトの名無しさん
18/01/29 15:15:09.99 LZ9wDs2K.net
>>329
>>12-19の方法で相対パスを取得すれば出来ると思うよ
345:デフォルトの名無しさん
18/01/29 16:22:04.20 LZ9wDs2K.net
自分用に書いたbatを流用してみた
多分こんな感じで動くはず
URLリンク(pastebin.com)
346:デフォルトの名無しさん
18/01/30 00:28:24.66 fZrZLUfh.net
>>329
set "a=D:\comp" & set "b=D:\compopen"
setlocal enabledelayedexpansion
for /L %%i in (4,1,1000) do if "!a:~%%i,1!"=="" set "c=%%i" & goto x
:x
endlocal & set "c=%c%"
for /r "%a%" %%i in (*.zip *.rar) do set "d=%%~dpni" & set "e=%%~i" & call :y
goto :eof
:y
setlocal enabledelayedexpansion
7z x -o"!b!!d:~%c%!" "!e!"
347:330
18/01/30 04:04:55.14 I+jPXl6+.net
>>332
なるほど
自分のは冗長に書きすぎてたね
348:デフォルトの名無しさん
18/01/30 16:28:50.07 /nodnUUg.net
>>329
使い回しあんまり考えなければ
-------- ここから
set path=C:\Program Files\7-Zip;%path%
cd /d D:\comp
for /f "usebackq delims=" %%i in (`dir /ad /s /b`) do (
echo,"%%~i"
set "tmppath0=%%~i"
call set "tmppath1=D:\compopen%%tmppath0:~7%%"
pushd "%%~i"
call 7z.exe x *.* -spe -bso0 -o"%%tmppath1%%\*" 2>>D:\compopen\errlog.txt
popd
)
-------- ここまで
マズいフォルダ(パス)名が無いことを前提に、もろもろ 7-Zip に良きにはからってもらう
349:デフォルトの名無しさん
18/01/30 17:10:39.08 25OUwAYA.net
>>332
>>334
ありがとうございます!
150GBくらいあるから、まだ展開し終えてないけど、
動き出しました。
実際のcompの中のa,b,c,・・・フォルダの中のzipやrarの名前は、
今のところ、下記みたいにフォルダの文字列含んでて、階層を上にしてもよかったかなと思いつつ、
350:例外も出てくるかもしれないので、このまま走らせてみます。 しっかり解凍しだしてフォルダ生成してくれてます。 D:/ ├comp/ │ └ a/ │ └ a111.zip │ └ a222.zip │ └ b/ │ └ xx1b.rar │ └ xx2b.rar │ └ c/ │ └ cttt.zip │ └ crrr.rar
351:デフォルトの名無しさん
18/01/31 00:35:03.40 ah9e2u9N.net
そもそも、そんな複雑な手続きには、PowerShell, Ruby などを使えw
352:デフォルトの名無しさん
18/02/03 09:54:54.05 y+J4EMEq.net
コマンドプロンプトの仕様についてだけど、遅延展開ってデフォでONじゃダメだったのかな?
あれ打ち込むのマンドクサ('A`)
353:デフォルトの名無しさん
18/02/05 04:53:11.12 j3KUW6ez.net
1.test.exeという実行ファイルがある。
2.test.exeのフルパスは必要に応じて「test.exeをShift+右クリック」→「パスをコピー」して変数testExeに格納してもらう。
このフルパスには"D:\a bc\test.exe"のように空白が含まれることがあるとする。
3.FOR文でこのtest.exeを--helpオプションつきで実行し、結果からfindstr&setしたい。
---作成バッチ---
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
FOR /F "tokens=3" %%a IN ('%testExe% --help ^| findstr "TargetStr"') DO (
set kekka=%%a
)
@echo %kekka%
pause
---実行結果---
'D:\a' は、内部コマンドまたは外部コマン ド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
---解1---
testExeを設定する際、全体をダブルクォートで囲むのではなく、
空白を含むフォルダだけをダブルクォートで囲むようにする。
set testExe=D:\"a bc"\test.exe
解1はtestExeの設定が地味に面倒になってしまうので回避したいのですが、何か良い方法はないでしょうか?
354:デフォルトの名無しさん
18/02/05 05:04:15.80 j3KUW6ez.net
>>338 追記
パスに空白を含む場合も問題ですが、
set testExe="D:\abc\test.exe"
のように空白を含まない場合には
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
と言われてエラーになるので、それも含めてなんとかしたいという点を書き忘れていました。
「FOR文でフルパスでコマンドを実行したい場合、どうすればよいのでしょう」というのが根本的な質問です。
355:デフォルトの名無しさん
18/02/05 05:55:25.28 j3KUW6ez.net
すみません。>>338-339ですが、直接フルパスで実行するのではなくフォルダに移動して実行することで一応解決しました。
---
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
FOR /F "tokens=1 delims=" %%I IN (%testExe%) DO (
IF "%%~nxI"=="test.exe" (
pushd "%%~dpI"
FOR /F "tokens=3" %%M IN ('.\%%~nxI --help ^| findstr "TargetStr"') DO (
set kekka=%%M
)
popd
)
)
@echo %kekka%
pause
---
問題点や、もっとスマートな方法があれば、教えていただけると助かります。
356:デフォルトの名無しさん
18/02/05 08:19:13.38 ETXmgzVd.net
>>338
@echo off
cd /d %~dp0
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('start /wait /b "" %testExe% --help ^| findstr "TargetStr"') DO (
set kekka=%%a
)
@echo %kekka%
pause
357:デフォルトの名無しさん
18/02/05 08:24:05.58 chwOG0ZE.net
>>338
自分もこの問題に直面して同じ解決策とったんだけどこれって何が原因でこうなるの?
358:デフォルトの名無しさん
18/02/05 10:47:37.64 ETXmgzVd.net
こっちのがいいかも
前に似たようなネタがあったような
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('cmd /s /c "%testExe% --help | findstr "TargetStr""') do (
359:デフォルトの名無しさん
18/02/05 11:16:40.07 j3KUW6ez.net
>>341
できました!なるほど、startを使えばよかったのですね・・・。ありがとうございます。
>>342
なんなんでしょうね。仕組みがよくわからないです・・・。どなたか解説を・・・。
360:デフォルトの名無しさん
18/02/05 11:23:08.71 ETXmgzVd.net
やっぱり >>343 の cmd はダメだな
testExe や TargetStr の中のスペースがデリミタ扱いされる
スペースが2個以上続くと誤動作する
>>341 の start がいい
361:デフォルトの名無しさん
18/02/05 11:37:48.40 j3KUW6ez.net
>>343 >>345
重ねてありがとうございます。
cmdの場合は以下でうまくいくようです
362:。 set testExe="D:\a bc\test.exe" FOR /F "tokens=3" %%a IN ('cmd /c %testExe% --help ^| findstr "TargetStr"') DO (
363:デフォルトの名無しさん
18/02/05 13:08:35.91 Emu9UBTE.net
括弧の中の最初と最後の引用符が削除される?
364:デフォルトの名無しさん
18/02/05 14:11:13.29 ETXmgzVd.net
やっと思い出したぞ裏技w
前後の端にダミーの二重引用符 ^" を付けるんだった
>>347 のおかげで思い出したぜ
set testExe="D:\a bc\test.exe"
for /f "tokens=3" %%a in ('^"%testexe% --help ^| findstr "targetstr"^"') do (
365:デフォルトの名無しさん
18/02/06 13:18:25.70 m2OYikdE.net
>>347-348
できました。なるほど、そういう解釈がされるんですね・・・。
バッチってほんと思わぬところでひっかかりますよね。とても勉強になりました。ありがとうございます。
366:デフォルトの名無しさん
18/02/07 10:59:47.18 fDqCQtuz.net
VBでプログラムを作っているのですが、行き詰ってしまったので質問させていただきます。
バッチでiniファイルを読み込み、iniから取得したデータを格納した変数をVBのソース内で使いたいのですが可能ですか?
exe形式での納品となるのでiniファイルの読み込みはどうしてもバッチ内で行いたいのです。
ちなみに処理の流れとしては、iniファイル読み込み→exeファイル実行となっています。
どなたかご教授ください。よろしくお願いいたします。
367:デフォルトの名無しさん
18/02/07 11:12:08.68 fDqCQtuz.net
申し訳ございません。
バッチでiniファイルを読み込み、iniから取得したデータを
格納した変数をVBのソース内で使いたいのですが可能ですか? ×
VBのソース内の変数に格納したいのですが可能ですか? ○
でした。
368:デフォルトの名無しさん
18/02/07 11:43:25.21 LQaGrglb.net
バッチで、ini ファイルを読み込み、必要な値を取り出して、
それらを引数にして、exe を起動する
そして、exe 内では、引数から読み込んだ値を使う
369:デフォルトの名無しさん
18/02/07 12:00:38.62 fDqCQtuz.net
>>352
どう調べたらいいか分からず困っていたのですが、引数の取得で検索すればなんとかなりそうですね。
後は自分で調べてやってみます。ありがとうございました。
370:デフォルトの名無しさん
18/02/07 16:46:31.34 EyPJd6fI.net
バッチだと for文を使います
複雑なことをするのであればVBで直接読み込む方法もあります
371:デフォルトの名無しさん
18/02/10 12:18:28.89 /lSv2IRR.net
バッチでiniファイルなんて読み込めるの?
VBとかからGetPrivateProfileStringとかのAPIを使うんじゃないの?
まあ力技で出来ないことはないんだろうけど自分が知らないだけで一般的なやり方というのがあるのかな?
372:デフォルトの名無しさん
18/02/10 15:32:33.27 K6TfvilX.net
ググればふつうに出てくるようだが。(内容まではちゃんと見てない)
373:デフォルトの名無しさん
18/02/10 16:29:19.90 Sj+J5yD3.net
>>355
>>354の言うようにfor文を使う
わかりやすいとは言えないし特殊文字が含まれると色々面倒なのでおすすめはしない
374:デフォルトの名無しさん
18/02/11 19:16:43.96 l1W9SMIH.net
バッチファイルでファイル操作って一見ちゃんと動いてるように見えて穴だらけって場合が多いからやりたくないな
wshで実装したりps辺りで既存のAPI呼び出す方がいい
375:デフォルトの名無しさん
18/02/11 19:44:19.46 +WWL4Di4.net
batで設定呼び出したい時はiniじゃなくてsetting.batに変数を直接記述してcallしてるわ
このやり方も良いやり方なのかどうか分からんけど
376:デフォルトの名無しさん
18/02/12 12:02:40.25 OYWjTvif.net
URLリンク(ascii.jp)
Windows 10 RS4に追加された「curl」と「tar」コマンド
って curl と tar が追加されるんだ
PowerShell にも curl コマンド(エイリアス)があってややこしさが増すな
でも、標準で使えるようになるのはバッチファイル使ってる身とすれば
嬉しくはある
377:デフォルトの名無しさん
18/02/12 15:53:42.90 BbO5lIMB.net
もうRS4か
RS3の不具合なんとかしてくれよ
378:デフォルトの名無しさん
18/02/18 16:07:03.48 OqSvNe2j.net
ファイル圧縮バッチを
hta の画面にドロップするだけで実行するやつ作った
スレリンク(csaloon板:843番)-846
ファイルをバッチファイルにドロップして引数受け取りは普通にあるけど
ファイル名の一部を文字列としてドロップしても起動されないのでこういう方法を取った。
379:デフォルトの名無しさん
18/02/18 16:25:37.39 ZqWPhgUg.net
>>360
Windows10 なら、WSL で、MS Store から、Ubuntu 16.04 LTS をダウンロードすれば、
curl, tar も入っている
他のLinux のコマンドも、一杯ある
380:デフォルトの名無しさん
18/02/18 19:16:35.61 yvQzNzLN.net
>>363
それはバッチから使えるの?
381:デフォルトの名無しさん
18/02/18 19:20:27.56 F2O3xW/S.net
普通に使える
ubuntu run curl --help
382:デフォルトの名無しさん
18/02/19 04:53:30.17 xIEc0S27.net
Linux(Ubuntu)側のbash、Windows側のPowerShell・コマンドプロンプトから、
相互のアプリ・コマンドを実行できる
相互のパイプも、つなげられる
つまり、Linux側のbashは、Windows10 の1つのアプリになっている
383:デフォルトの名無しさん
18/02/19 08:14:36.88 2cNNs3G6.net
> Ubuntu 16.04 LTS をダウンロードすれば、
この手の前提条件が無いことがバッチのメリットなのに...
384:デフォルトの名無しさん
18/02/19 22:58:00.92 oh22XJYs.net
>>363
Web開発テスト用の範囲を超えてない。
当のMSが「運用には使ってくれるな」つってるのによ。
お前馬鹿か?馬鹿だろ。
385:デフォルトの名無しさん
18/02/19 23:41:31.81 9tX9GnHd.net
なんでこの人「運用」とか言い出してんの?
386:デフォルトの名無しさん
18/02/19 23:44:41.90 uhfYTKrf.net
>>368
WSLはウェブサービス開発で使って、
実際にそのウェブサービスを動かす(=運用)するのは
ネイティブなLinuxの上だぞ。例えばAzure上のLinuxとか
運用に使ってくれるなっていうのは、WSL上でウェブサービスを動かして
実際に不特定の人にサービスを提供するなっていう意味だ
387:デフォルトの名無しさん
18/02/20 00:06:58.45 amqSspGZ.net
WSL 上で、Webサーバーとかを常時接続させて運用できない
まあ最初から、自分のデスクトップPC を外部につなげて、
そんなサービスをする奴は、居ないだろ
388:デフォルトの名無しさん
18/02/20 00:08:38.09 ZtM0s1po.net
バッチで使うのは運用ではないと?
389:デフォルトの名無しさん
18/02/20 00:13:22.58 XC4KsyV/.net
>>370
端末のスタートアップスクリプトに使うのも用途外。
だから「使える」とか言うのは明らかに言い過ぎ。
お前馬鹿か?馬鹿だろ。
390:デフォルトの名無しさん
18/02/20 00:40:00.47 wdwe47Ke.net
>>373
> 端末のスタートアップスクリプトに使うのも用途外。
端末のスタートアップスクリプトの話なんかしてないんだが、
何を言い出してるんだ? そもそも端末のスタートアップスクリプトの
意味わからねぇw
>>372
運用っていうから悪いんだよ。
「一般ユーザーに対してのウェブサービスの提供」
MSが使うなって言ってるのはこれだけだよ
391:デフォルトの名無しさん
18/02/20 00:43:54.06 wdwe47Ke.net
うん、ちゃんとFAQに書いてあったね
URLリンク(docs.microsoft.com)
> Also, even though you will be able to run many popular server applications (e.g. Redis),
> we do not recommend WSL for server scenarios ? Microsoft offers a
> variety of solutions for running production Ubuntu workloads in Azure, Hyper-V, and Docker.
サーバーアプリケーションを実行できるが、サーバーとしてのシナリオは推奨してないと
392:デフォルトの名無しさん
18/02/20 00:46:37.66 wdwe47Ke.net
もう一つ、誰のためのものですか?という質問には
393: > Who is this for? > This is primarily a tool for developers -- > especially web developers and those who work on or with open source projects. 第一に開発者、特にウェブ開発者やオープンソースプロジェクトを行ってる人 > This allows those who want/need to use Bash, common Linux tools (sed, awk, etc.) and > many Linux-first tools (Ruby, Python, etc.) to use their toolchain on Windows. bashや多くのLinuxツールや言語を使いたい人のためのものと
394:デフォルトの名無しさん
18/02/20 00:57:48.56 amqSspGZ.net
Windows のコマンドプロンプトから、
wsl bash -c "echo 'hello'"
出力結果 : hello
これぐらいのLinux の起動・実行・終了は、1秒!
定時処理ぐらい楽勝
サーバーみたいに常時実行しなければ大丈夫
395:デフォルトの名無しさん
18/02/20 01:27:38.14 wdwe47Ke.net
>>377
wsl.exeを使うなら bash -c はいらないぞ
wsl echo hello でよい
wsl echo --help と wsl /bin/echo --help の実行結果が違うから
wslの中ではbash上で動いているっぽい
wsl ps axfu やってもbashいないんだけどな
まあ詳しい人に聞けば、そこら辺の動きは知ってるだろう。
あと、別にLinuxは起動してるわけじゃないのでLinuxの起動と書かれると違和感がある。
WSLはLinuxカーネルを模したサブシステム
396:377
18/02/20 01:41:53.13 amqSspGZ.net
Windows のコマンドプロンプトで、
>where wsl
C:\Windows\System32\wsl.exe
>where ubuntu
C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\ubuntu.exe
wsl, ubuntu(Linux), bash の関係がよくわからない
漏れのノートPC は、i3、メモリ8GB、SSD だけど、
Windows10 の単なるアプリだから、起動・実行・終了で、1秒ほど
WSLは、もう正規版だし、単なるアプリとして使う分には、問題ないだろ
397:377
18/02/20 01:44:26.24 amqSspGZ.net
書き忘れた
Windows のコマンドプロンプトで、
>where bash
C:\Windows\System32\bash.exe
398:377
18/02/20 01:53:46.64 amqSspGZ.net
Windows のコマンドプロンプトで、
>wsl echo hello
>ubuntu -c "echo hello"
>bash -c "echo hello"
これらは皆、hello が出力されるけど、書き方が異なる
wsl では、echo がサブコマンドになっているのかも
399:デフォルトの名無しさん
18/02/20 01:58:14.32 wdwe47Ke.net
>>379
俺もちゃんと調べたわけじゃないけど、
開発の歴史からすると、
最初はbash on ubuntu on windowsという扱いで
bash.exeでUbuntu上のbashが起動できる(おまけでLinuxコマンドも使えるよ!)という扱いだった。
このbashが起動できるという仕組みを提供しているものの名前がWindows Subsystem for Linuxだったわけだが
開発が継続しLinuxカーネルとの互換性があがってもうbashだけが起動するもんじゃないよねってことで
Windows Subsystem for Linuxの略であるwslと呼ばれるようになり。
wsl.exeができた(おそらくbash -c "コマンド" と面倒な書き方をしなくて良いラッパー)
それと前後して、ubuntuだけじゃなくopenSUSEやFedoraも動くよ!(いやFedoraまだリリースされてないんだが)
ということになり、bash.exeやwsl.exeで起動するのはどっちのディストリよ?
ってことでそれを切り替えることができるwslconfig.exeができた。
また直接wslconfig.exeの設定によらず、ubuntuやopensuseを直接起動するための
ubuntu.exe やopensuse-42.exe が出来た。
こんな所だと思う
400:デフォルトの名無しさん
18/02/20 02:00:13.61 ZtM0s1po.net
なんでバッチスレでパソコン博士がWSLでイキってるの?
401:デフォルトの名無しさん
18/02/20 02:01:02.04 wdwe47Ke.net
>>381
ubuntu /?をするとわかるが、
ubuntu run echo helloが正しい
ubuntu.exeもwsl.exeもbash.exeもパラメータの扱いが違うだけで
ディストリ上のbashを実行していることは確かなようだ
402:デフォルトの名無しさん
18/02/20 02:01:43.71 wdwe47Ke.net
>>383
Windows 10において、バッチファイルでWSLと連携するのは
当たり前の話になってきているから
403:デフォルトの名無しさん
18/02/20 02:04:18.90 wdwe47Ke.net
ubuntuは
Usage:
<no args>
- Launches the distro's default behavior. By default, this launches your default shell.
と書いてあるから、bashじゃなくてデフォルトシェルが呼び出されるのかも。
うーん、どれを使うのが良い(汎用的)なのだろう?
404:377
18/02/20 02:51:43.01 amqSspGZ.net
wsl(Linux のbash)・PowerShell・コマンドプロンプトの3つが、
パイプでもつなげられるし、シームレスになってきて、CUI が統合されてきているから、
個別の話よりも、3つのCUI をパイプでどうつなげるかの方に、
話の焦点が移ってきている
405:377
18/02/20 03:10:41.01 amqSspGZ.net
bash は、C:\Windows\System32\bash.exe を起動する
ubuntu は、bash, zsh など、自分がデフォルトに設定した、シェルを起動する。
環境変数、$SHELL
>wsl echo $SHELL
/bin/bash
wsl コマンドが、ubuntu, open suse など、
自分がデフォルトに設定した、Linux を起動
>wslconfig /list
Windows Subsystem for Linux ディストリビューション:
Ubuntu (既定)
推測で書いたけど、普段は、wsl を使うと良いかも
406:デフォルトの名無しさん
18/02/20 06:46:25.63 +0IlbXev.net
>>383
オモチャ買ってもらった子供が「見て見てこれすごいんだよー」って言ってるような感じ
暖かく見守ってやれ
407:デフォルトの名無しさん
18/02/20 12:42:35.46 ZtM0s1po.net
>>389
WSL出た頃なら仕方が無いが...
やっぱパソコン博士レベルだと今頃になってやっとおもちゃを見つける感じなのか。
408:デフォルトの名無しさん
18/02/20 19:54:28.42 +0IlbXev.net
へへーん、ぼくなんてまえからもってるもんねー
それはすごいねー w
409:デフォルトの名無しさん
18/02/20 21:48:42.53 BI5N21qv.net
さすがにスレチだからもうやめとけと思うけど、WSLについて少し調べてみようと思うきっかけにはなったわ。
410:デフォルトの名無しさん
18/02/20 22:56:06.68 wdwe47Ke.net
パソコン先生に恨みでもあるのかな?
そんな話をしてもバッチファイルを書く上で
何の意味もないと思うんだが、話をしたいのだろうね
411:デフォルトの名無しさん
18/02/20 23:00:35.05 wdwe47Ke.net
>>390
Bash on Ubuntu on Windowsは、早く使いたかったんで
Inside Previewに変えてまで使ったよ。
GUIアプリには対応していないって書いてあったが仕組み上
GUIアプリ動くんじゃね?ってそこの頃はまだ情報が少なかったけど
実際に自分で試してxeyes は動いたーって2ちゃんねるに書いた記憶がある
412:デフォルトの名無しさん
18/02/20 23:11:12.21 BI5N21qv.net
自分語りとか余計なことをダラダラ書き連ねるから嫌われるんだよ。
413:デフォルトの名無しさん
18/02/20 23:20:45.61 wdwe47Ke.net
嫌うのは相手の問題だからどうしようもない
俺に対する勘違いは、俺の問題だから解決する必要がある
414:デフォルトの名無しさん
18/02/21 02:19:50.48 PXpce9sQ.net
パソコン先生、怒りの連投きたー
415:デフォルトの名無しさん
18/02/21 02:50:21.44 1KGQWp4x.net
連続してね~じゃんw
416:デフォルトの名無しさん
18/02/25 16:07:21.04 97AlcoLv.net
例えば「aaa」という名前のODBCの設定は以下のコマンド
reg query HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa
を実行すると
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa
Driver REG_SZ C:\WINDOWS\system32\SQLSRV32.dll
Server REG_SZ aaa
Database REG_SZ aaaDB
LastUser REG_SZ *****
Trusted_Connection REG_SZ Yes
のように表示できますが
この設定の接続先データベース(上記
417:ではaaaDB)をコマンドで変更することは出来るのでしょうか?
418:デフォルトの名無しさん
18/02/25 17:44:24.52 f0GbsyKa.net
reg add HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\aaa /v Server /t REG_SZ /d bbbDB
とかでだめなん
419:399
18/02/25 19:41:52.11 97AlcoLv.net
>>400
「/v Server」は「/v Database」の間違いですよね?
これでバッチリいけました。ありがとうございます!
420:デフォルトの名無しさん
18/02/28 10:04:11.85 xTKxXp1v.net
windows10 のコマンドプロンプトの、文字色を変えるエスケープシーケンスで、
prompt ^[[1;36m[$d$s$t$h$h$h] ^[[1;33m%USERNAME% ^[[37m$p$_$g$s
prompt $e[1;36m[$d$s$t$h$h$h] $e[1;33m%COMPUTERNAME% $e[37m$p$_$g$s
echo ^[[1;36mバッチファイル^[[37m
は動作しますが
echo $e[1;36mスクリプト$e[37m
だと駄目でず。
( ^[ は、CTRL+[ で入力する制御文字(\x1B))
echo で有効な「$e」の様な入力方法は有りますか?
421:402
18/02/28 10:18:01.40 xTKxXp1v.net
>>402
自己解決しました
422:デフォルトの名無しさん
18/03/16 22:05:15.90 HEHaQcsS.net
バッチファイルで
空行を除く最終行にhogeって文字がなかったら追加して改行
-- hogeとかになってたら削除してhoge追記して改行
って事をやりたいんですけどどうやったらできるかおせーてください
423:デフォルトの名無しさん
18/03/17 05:37:29.93 nxO/ldT7.net
Ruby で作った
require 'stringio'
ary = []
File.open(ARGV[0]) do |io|
text = io.read
text.rstrip! # 末尾の連続した空白を、すべて削除する
sio = StringIO.new text
ary = sio.readlines # 全行を配列に読み込む
if ary[-1] == '-- hoge'
ary[-1] = "hoge\n"
elsif /hoge/ !~ ary[-1] # hoge を含まない
ary[-1] += "hoge\n"
else
return
end
end
# 一旦ファイルを削除してから、書き込む
File.open(ARGV[0], 'w') { |io| io.write ary.join }
424:デフォルトの名無しさん
18/03/17 12:51:31.78 HNxDhnRb.net
>>405
あのーバッチって聞いてるのにrubyのスクリプト出されても困るんですけど
425:デフォルトの名無しさん
18/03/17 13:17:48.14 FI/uI0vX.net
やらなくても言い余計なことをして場を混乱させる人って必ずいるよね
426:デフォルトの名無しさん
18/03/17 13:29:47.44 Y0/A+N6A.net
ルビ厨の相手するなよ...
427:デフォルトの名無しさん
18/03/17 13:33:32.46 T/uji2Bj.net
ロジック真似すればいいだけじゃん
作ってくれじゃなくて教えてくれなんだから
Lispで回答されて読めないのは理解できるが
上のRubyくらいなら何の問題もないだろ
428:デフォルトの名無しさん
18/03/17 15:03:38.07 RY7g5/8I.net
聞かれてるのはバッチでの実現手段なのにロジックとか言い出してどうすんだよ
429:デフォルトの名無しさん
18/03/17 15:06:43.59 9hc/1qQU.net
文字列の比較も削除も面倒だから
バッチではやらないほうがいい
430:デフォルトの名無しさん
18/03/17 17:30:52.69 4x6FsbbS.net
vbscript版作ったけどバッチ限定なら貼らなくいい?
431:デフォルトの名無しさん
18/03/17 18:08:03.98 RY7g5/8I.net
>>404
一応無理矢理ここまで作ってみたけど、ファイルの中身や指定文字列に特殊文字が入ってると
容赦なくコケるという地獄仕様のままなんで、限定的にしか使えないと思う。
有意な最終行の内容にあわせて結果ファイルを出力するバッチ
URLリンク(pastebin.com)
コケないようにやるにはどうすればいいのかな・・・。誰かうまいやり方があれば教えてくれ。