1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
2 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:53:38.55 ID:v84I4o+L.net] スレ作った
3 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 15:10:24.99 ID:ROx7bOng.net] >>1 いちおつ ところで、最近、プロンプトの色が変わってしまったんだが直し方教えてください くすんだ感じになってしまう color 9f とか明るい色が顕著 自分で加えた変更の何が影響したのかわからず、途方に暮れてます
4 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 15:28:50.54 ID:0+i4JzOE.net] タヒ
5 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 15:34:12.06 ID:0TmpON8B.net] >>1 乙 テンプレ文だがもうWSHよりはPowershellじゃないのかしら?
6 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 15:54:50.45 ID:waeO4Jak.net] powershellはここの板に別スレがあってここで取り扱う必用は無い 一方wshはもはや専用スレは無くこのスレに含めた形で残っている
7 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 23:59:36.40 ID:VxDAgoaS.net] >>3 自己レスです レジストリの HKEY_CURRENT_USER\Console にある ColorTableXX で指定された 色 00BBGGRR がソレだったので何かが変だった訳でもなく、忠実に この値を読んでいただけでした 黒をわざわざ 0c0c0c にしていたり、全テーブル 00 から 15 まで 全て変更が入っていたので、いつの間に変更したのかという疑問が 残りますが……
8 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 05:37:11.56 ID:HUZaaTR+.net] >REG QUERY "HKCU\Console" /f ColorTable* HKEY_CURRENT_USER\Console ColorTable00 REG_DWORD 0x0 ColorTable01 REG_DWORD 0x800000 ColorTable02 REG_DWORD 0x8000 ColorTable03 REG_DWORD 0x808000 ColorTable04 REG_DWORD 0x80 ColorTable05 REG_DWORD 0x800080 ColorTable06 REG_DWORD 0x8080 ColorTable07 REG_DWORD 0xc0c0c0 ColorTable08 REG_DWORD 0x808080 ColorTable09 REG_DWORD 0xff0000 ColorTable10 REG_DWORD 0xff00 ColorTable11 REG_DWORD 0xffff00 ColorTable12 REG_DWORD 0xff ColorTable13 REG_DWORD 0xff00ff ColorTable14 REG_DWORD 0xffff ColorTable15 REG_DWORD 0xffffff
9 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 06:45:17.58 ID:y7NAvoby.net] >>6 > powershellはここの板に別スレがあってここで取り扱う必用は無い 別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な PowerShell の話題が出たら誘導すればいいだけだし > 一方wshはもはや専用スレは無くこのスレに含めた形で残っている wshの専用スレがないのは需要がないからだろ そんなものに対して使用を検討する必要なんてないと思うぞ
10 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 07:28:54.55 ID:Q9Jr5DcP.net] >>8 デフォルト値ありがとうございます 実際にOSインストールしなおしての確認はしてないのですが Win10_1809Oct_Japanese_x64.iso の install.wim の install.wim\3\Users\Default\NTUSER.DAT ハイブファイルのロードをしてみると変化していた方の配色と一致してました OSクリーンインストール後、しばらく変化に気づいていなかっただけ、 という事のようです 少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー、 だったのも加味して…… スレ汚し失礼しました
11 名前:デフォルトの名無しさん mailto:sage [2018/11/22(木) 08:20:54.79 ID:HUZaaTR+.net] 俺も以前に経験あるが何で勝手に変わるのか未だに不明 デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど
12 名前:デフォルトの名無しさん mailto:sage [2018/11/23(金) 06:41:38.84 ID:Yr5PhtU+.net] >>8 だが 俺も"HKCU\Console"消して起動したら ColorTable00 が 0x0 から 0xc0c0c になったよ 今はこれがデフォルトなんだな
13 名前:デフォルトの名無しさん mailto:sage [2018/11/23(金) 07:03:12.22 ID:Yr5PhtU+.net] dir | more でEnter押すと1行ずつ出てくるんだけど 前からこんな動作だったっけ? dir /p みたいにページごとにスクロールしないのか? ちなみにWin10Pro 1809 17763.107 だ
14 名前:デフォルトの名無しさん mailto:sage [2018/11/23(金) 07:31:03.82 ID:Yr5PhtU+.net] すまんhelp見たら <ret> 次の行を表示します。 になってた。 あとスレチだが gpg -d がエラー出る...
15 名前:デフォルトの名無しさん mailto:sage [2018/11/23(金) 13:03:06.27 ID:H8vDP5fG.net] このスレってテンプレに「 次スレは>>970 踏んだ人が立てましょう 」とかないんだね。 毎回同じ人が立ててるのかな?
16 名前:デフォルトの名無しさん [2018/12/02(日) 11:33:28.29 ID:WVaKBjKU.net] ffmpegで動画容量を減らしています この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか また,バッチファイルでなくとも他に良い方法などありましたらぜひお願いします ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4 ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4 普段はこれを実行しています
17 名前:デフォルトの名無しさん mailto:sage [2018/12/02(日) 14:26:12.73 ID:uIlAasYL.net] シェルスクリプト・PowerShell もあるけど、 安全性のため、ダブルクリックでは動かない ダブルクリックで動くのは、バッチファイルだけ
18 名前:デフォルトの名無しさん mailto:sage [2018/12/03(月) 10:52:45.51 ID:mYQmjn55.net] >>16 オイラはSendToにバッチファイル(のショートカットでもOK)入れて右クリックの送るから使ってる C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo 2-passは使ったことないけど、とりあえず >>16 の処理をするようになってるはず 適当なファイル名を拡張子batで保存して使ってちょ 書き込み時にインデント消えちゃうかもしれないけど、3行目の&&の前だけは先頭に空白1文字以上入れてちょ for %%f in (%*) do ( ffmpeg -y -i "%%~ff" -b:v 500k -pass 1 -f mp4 NUL ^ && ffmpeg -i "%%~ff" -b:v 500k -pass 2 "%%~df%%~pf%%~nf_output%%~xf" ) pause 自動でウィンドウ閉じたければ最後のpauseはいらない 出力ファイル名は入力ファイル名_outputにしてるけど、お好みで変えればよい 複数ファイルも順番に処理するよ
19 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 18:23:57.45 ID:YV7FMG5g.net] typeコマンドってパイプかますと出力が変わるんだな... 以前はこんなじゃなかったような気がするが? >type a abc漢字def >nkf -SjO a b >nkf -Js b abc漢字def >type b abc4A;zdef >type b | more abc$B4A;z(Bdef
20 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 20:16:59.52 ID:Mme7W69z.net] "C:\hoge.exe"というプログラムを再起動したくて taskkill /im hoge.exe /f start C:\hoge.exe という2行のバッチを書いたら、hoge.exeがまだ終了しきってなくて起動しませんでした。 hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので タスクリストから居なくなったことを確認してから起動したいのですが どう書けばよいのでしょうか?
21 名前:デフォルトの名無しさん mailto:sage [2018/12/04(火) 21:09:17.31 ID:YV7FMG5g.net] TASKLISTで確認?
22 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 10:02:24.61 ID:miUFx5r6.net] >>20 こんな感じでどうだろうか? taskkill /im hoge.exe /f :check_run timeout /t 1 /nobreak >nul tasklist | find "hoge.exe" >nul && goto check_run start C:\hoge.exe
23 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:06:21.73 ID:B1LaPmLX.net] >>20 tasklist xx|findstr xx if %errorlevel% == 0
24 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:22:10.57 ID:GaZgkwnu.net] 今help見たら、まだ直ってねえ... tasklist/?のフィルター名IMAGENAMは間違いだ... for /f "skip=1" %%i in ('tasklist /fi "imagename eq hoge.exe"') do goto check_run
25 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:39:45.58 ID:GaZgkwnu.net] あ、条件が逆w...
26 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:42:42.33 ID:GaZgkwnu.net] 逆じゃないなw ボケたなあ...
27 名前:20 mailto:sage [2018/12/05(水) 22:04:34.15 ID:82viBDdQ.net] みなさんレスありがとうございます! 明日職場で試してみますね。 恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので (WinXP Homeです。Win7が故障中なので…) どうもありがとうございました!
28 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 22:18:55.09 ID:NGe7cQU/.net] XPならtimeoutも無いから
29 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 05:58:03.99 ID:+WfW7iJP.net] XPってtaklistすらないんか…( ゚д゚)ポカーン にしては↓のスレは盛況だなw WindowsXPを使い続けるよ Part94 https://mevius.5ch.net/test/read.cgi/win/1543650955/
30 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 06:30:42.74 ID:U/lGMKnD.net] XP Proにはあるんだが XP HomeではPowerShellのGet-Processで代用できるらしいよ PowerShell1.1以降らしいから、PowerShell2.0をインストールしないといけないけど
31 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 15:26:32.29 ID:iJNEICpM.net] Sysinternals Suite にある、pslistを始めとするコマンド群を利用すれば、 XPでも同等のことは出来る
32 名前:デフォルトの名無しさん mailto:sage [2018/12/06(木) 21:28:59.92 ID:HLPPFLjR.net] XPの駆除には苦労した。 Vistaの切られぶりには辟易。 管理者って損な役回りだよなぁ…。 今は7の駆除中。
33 名前:デフォルトの名無しさん [2018/12/06(木) 23:38:01.47 ID:UfR2YFj9.net] >>18 ありがとうございます レス内のものは上手く行きませんでしたが別でうまく行くものを作るためのヒントになりました
34 名前:デフォルトの名無しさん mailto:sage [2018/12/07(金) 11:34:54.02 ID:k1b27fN5.net] >>19 それパイプ処理してるコマンドの方の問題じゃなくて?
35 名前:デフォルトの名無しさん mailto:sage [2018/12/07(金) 12:17:44.85 ID:cJMcluJv.net] 俺には何が原因か分からない 画面コンソール入力するたびに最下段にスクロールするし スレチだけど gpg -d で画面表示させるとエラー gpg -h で画面表示させると文字化けまくり cmd の表示関係が最近おかしい...
36 名前:デフォルトの名無しさん mailto:sage [2018/12/07(金) 19:56:05.65 ID:iBsL10N5.net] xcopyで出来ることは全てrobocopyでも出来るという認識で良いのでしょうか?
37 名前:デフォルトの名無しさん mailto:sage [2018/12/07(金) 21:49:55.05 ID:cUniS7mm.net] >>36 削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな。 ただ、xcopy が対話指向なのに対して robocopy はバッチ指向になってる。(言い換えればログ指向) コマンドを置き換えれば良いというものではない。場合によってはログが五月蠅い。 ま、今時、ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
38 名前:not 36 mailto:sage [2018/12/07(金) 23:31:50.72 ID:J47iFz0r.net] >>37 >ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。 そうだったのか、情報ありがとう 調べたらxcopyを使ったバッチファイルがあった、なおそ
39 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 20:14:50.36 ID:Zhb2FJyz.net] xcopyはほぼフォルダ丸ごとコピー用途に使ってたから /mirオプションで済むrobocopyの方が覚えやすくて助かるw コピー自体も高速らしいし
40 名前:37 mailto:sage [2018/12/08(土) 22:52:01.33 ID:i9Z2WdJR.net] >>38 xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ。 ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい。 対話式に目で動作を見ながらの分にはいいけど、それ以外の用途にはお勧めしないのだ。
41 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 23:16:46.42 ID:hZepSGXS.net] 単純コピーだったらxcopyの方がはるかに早かった気がするんだが
42 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 23:33:03.66 ID:fChhgbp6.net] ネット越しだと、SSHが使えるrsyncがいいんだけど、 Windowsで使うにはcygwinが必要になるのでやや使いづらいかも そこで、クラウドでも使えるrsyncという触れ込みのrcloneがいいかな タイムスタンプだけが変更された時でも、実体をコピーすること無く、タイムスタンプだけを変更するなど、 それなりに賢い処理がされるようだ もちろんローカルファイル同士でも使える バッチによる基本的なバックアップ用途の使い方しかしていないけど、とにかく多機能でおすすめ GoogleドライブやOneDriveなんかのクラウドへのバックアップも、バッチ処理で簡単にできる
43 名前:39 mailto:sage [2018/12/09(日) 10:35:27.52 ID:lZKvlyRa.net] >>41 過去にrobocopyのが速いみたいな記事を見た気がしたんだが 今探しても見当たらないので記憶違いかもしれぬ…
44 名前:デフォルトの名無しさん mailto:sage [2018/12/12(水) 12:03:09.26 ID:wwhUpKQ/.net] Windows 10 19H1 で notepad が BOM無しUTF-8がデフォルト になるそうだな... いっそのこと コマンド プロンプトも変えてくれ
45 名前:デフォルトの名無しさん [2018/12/13(木) 07:50:54.80 ID:3pDLloxA.net] バッチファイルの第一引数をファイル名にしたとして ファイル名に&とか^が入るときどうやって処理すればいいの? 代入するとエスケープされて消えちゃうのよ。
46 名前:デフォルトの名無しさん mailto:sage [2018/12/13(木) 09:07:24.92 ID:J8CqZcRY.net] 結局、BOM の有無を気にする開発者がいなかった。 欧米人には関係ないから ただ、Explorer では、BOMが無いと、UTF-8・sjis の区別がつかないから、文字列で検索できなくなるから、 漏れは、Windows10・WSL・Ubuntu16.04 で、grep を使っている
47 名前:デフォルトの名無しさん mailto:sage [2018/12/13(木) 09:48:12.16 ID:vKHUraGB.net] >>45 入らないようにする
48 名前:デフォルトの名無しさん mailto:sage [2018/12/13(木) 16:46:34.51 ID:H7Y/MSWd.net] >>45 バッチファイルに直接D&Dで起動用のバッチ というか他の起動方法なら引数を引用符で囲むだけだし @ECHO OFF IF "%~1"=="1" SHIFT /1 & GOTO MAIN SET "A=%CMDCMDLINE:"=*%" SET "A=%A:~0,-1%" FOR /F "tokens=2* delims=*" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J" SET E="%B%" 1 :NEXT_ARG SET "A=" & FOR /F "tokens=*" %%I IN ("%C%") DO SET "A=%%I" IF NOT DEFINED A %E% IF "%A:~0,1%"=="*" (SET "D=*") ELSE SET "D= " FOR /F "tokens=1* delims=%D%" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J" SET E=%E% "%B%" & GOTO NEXT_ARG :MAIN SET /A N=0 :LOOP IF "%~0"=="" PAUSE & GOTO :EOF ECHO ARG%N%=%0 SET /A "N+=1" & SHIFT & GOTO LOOP
49 名前:デフォルトの名無しさん [2018/12/14(金) 07:43:35.08 ID:0Ppktz+s.net] ありがとうございます。
50 名前:デフォルトの名無しさん mailto:sage [2018/12/15(土) 01:06:37.50 ID:1s8Yv8lB.net] dir ってオプション(スイッチ)の順番で表示が異なるのを発見 CD /D C:\ dir /AH /A-D dir /A-D /AH
51 名前:デフォルトの名無しさん mailto:sage [2018/12/15(土) 04:41:20.49 ID:s5MEHoIJ.net] 話変わるがスペース無くてもOK CD/D"C:\ DIR/AH/A-D DIR/A-D/AH
52 名前:デフォルトの名無しさん mailto:sage [2018/12/15(土) 08:56:57.96 ID:q+o88Lhc.net] その仕様のせいでパス区切り文字を/にすることができないという呪いが
53 名前:デフォルトの名無しさん [2018/12/16(日) 12:34:58.23 ID:2Wn8M764.net] 仕様がカオスになってるよね。 はやくLinuxcommandも標準対応して欲しい
54 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 00:07:47.83 ID:C+acxNdu.net] >>53 DOSってMS最古だから、ビルベイツ謹製のコードか仕様が残っていて 今の社員は恐れ多くて変えられない ということにしておこう
55 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 00:08:37.24 ID:msnfpX97.net] >>51 そうだったのか、サンクス
56 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 07:58:43.76 ID:xQB1O269.net] >>53 永久にならないから忘れろ
57 名前:デフォルトの名無しさん [2018/12/17(月) 19:54:34.22 ID:zeK+PGUB.net] >>43 だけどやっぱわからん! sendtoにバッチファイル入れといてフォルダを指定します。 指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない。 batファイル &というフォルダを右クリック送るをした時 @echo off echo "%~f1" これは表示できる set fname="%~f1" echo "%fname%" &や^が消えてしまう どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし。
58 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 20:25:30.59 ID:CiJxr7Yn.net] set "fname=%~f1"
59 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 20:26:56.58 ID:uU80GVRL.net] >>57 echo %fname%
60 名前:デフォルトの名無しさん mailto:sage [2018/12/17(月) 20:28:40.66 ID:uU80GVRL.net] あ、ごめん どっちでもいいよ
61 名前:デフォルトの名無しさん mailto:sage [2019/01/07(月) 13:47:43.45 ID:ZTiiH/I2.net] バッチファイル中の*.*で、そんなファイルはないとエラーが出た もう一度実行するとこれまでどおり問題なしに実行 windows更新の影響かセキュリティソフトのせいかも知れないが、 ウィルスがコマンドをすり替えている可能性もあるから、バッチ中のコマンドはパスも含めて たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った
62 名前:デフォルトの名無しさん mailto:sage [2019/01/07(月) 15:56:36.05 ID:ZNh/EsxI.net] 話変わるが 今は *.* としても意味無いよ * だけでOK
63 名前:デフォルトの名無しさん mailto:sage [2019/01/07(月) 16:12:14.33 ID:06gMfJVc.net] >>62 そうですか、昔のくせでつい ありがとうございます
64 名前:デフォルトの名無しさん mailto:sage [2019/01/07(月) 17:05:59.89 ID:ZNh/EsxI.net] 色んなソフト入れると %PATH% が膨れ上がる 使わないパスが30個とか.. 気味が悪いのでバッチの先頭に PATH C:\WINDOWS\system32;C:\WINDOWS; と書くようにしてる
65 名前:デフォルトの名無しさん mailto:sage [2019/01/07(月) 20:11:25.89 ID:xW7Pde1m.net] 既に存在しないフォルダが環境変数PATHに設定されてるとコマンド検索がそこで止まってしまう こんなのを使って時々確認するといい。 powershell $env:path -split ';'^|%{$_ ,(test-path $_ -patht cont ^)}
66 名前:デフォルトの名無しさん [2019/01/11(金) 19:37:34.13 ID:WNI2j4XF.net] 遅延環境変数OFFでやると面倒だ ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る
67 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 00:39:03.28 ID:IAz54C40.net] PowerShell で、$env:path -split ';' と打つと、 C:\WINDOWS\system32 C:\WINDOWS Intel を除いて、これらが先頭に来る
68 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 07:44:55.84 ID:uK0WXiBn.net] >>67 普通はね
69 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 09:23:20.28 ID:e5YcHVOA.net] @echo off & set "p=%path%" :v for /f "delims=; tokens=1*" %%i in ("%p%") do set "p=%%j" & echo "%%i" if defined p goto :v おらの環境 "C:\Program Files (x86)\Common Files\Oracle\Java\javapath" "C:\ProgramData\Oracle\Java\javapath" "C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common" "C:\Program Files (x86)\Intel\iCLS Client\" "C:\Program Files\Intel\iCLS Client\" "C:\WINDOWS\system32" "C:\WINDOWS"
70 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 09:53:16.85 ID:e5YcHVOA.net] マイクロソフトがどこまでチェックしているか知らんが コマンド追加したら干渉する可能性はあるな
71 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:11:28.57 ID:xs+avKSw.net] C:\HOGE ├─aaa │ ├─old │ │ aaa1.bat │ │ │ └─src │ aaa1.bat │ ├─bbb │ ├─old │ │ bbb1.bat │ │ │ └─src │ bbb1.bat │ └─ccc ├─old │ ccc1.bat │ └─src ccc1.bat ↑のoldフォルダとその中身を一括で削除したいのですが、コマンドでは難しいでしょうか?
72 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:13:41.92 ID:xs+avKSw.net] ↑HOGEの下には実際にはaaa〜cccのようなフォルダが無数にあります…
73 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:15:44.50 ID:xs+avKSw.net] ↑たびたびすみません。 正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です。
74 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 02:15:14.20 ID:pk2ilGy6.net] for /d /r とif文つかえばいいだけじゃん
75 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 04:39:06.95 ID:K0yQSeRR.net] del
76 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 07:09:39.32 ID:YWDkxQqJ.net] FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2> nul
77 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 07:32:36.37 ID:YWDkxQqJ.net] バッチにするまでもない 直接入力なら%%を%に
78 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 09:22:02.93 ID:pk2ilGy6.net] >>76 rdのところ rd/s/q "%%~I\old\" にした方がよいと思う
79 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:27:11.29 ID:pk2ilGy6.net] おいらならこう書く for /d /r c:\hoge %a in (old) rd /q /s %a
80 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:28:21.11 ID:xs+avKSw.net] >>76 どうもありがとうございます!バッチリ削除できました。 >>78 私も>>78 さんのコメントを読んで例えば"old2"という名前のフォルダがあったらこれも消えてしまうのかも?と思ったのですが、そんなことはありませんでした。 でも見た目でそのような疑問を覚える人もいるかもしれないなと思い、特に不要ではあるのですが"old"のあとに"\"を付けることにしました。 ありがとうございます。
81 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:36:33.72 ID:xs+avKSw.net] でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か…
82 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:54:52.71 ID:YWDkxQqJ.net] >>78 なぜ? >>79 ワイルドカードじゃないとオプション /D は無意味 これでもいいが FOR /R %%I IN (OLD) DO RD/S/Q "%%I" 2> NUL
83 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 11:08:28.37 ID:pk2ilGy6.net] >>82 >ワイルドカードじゃないとオプション /D は無意味 ちゃんとフォルダのみをフ
84 名前:Bルタするよ、試してみてね [] [ここ壊れてます]
85 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 11:18:39.20 ID:YWDkxQqJ.net] そうかな? RD の前に echo 付けて見たら? ファイルでも RD OLD がでるぞ FOR のヘルプをよく見てね
86 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 21:18:15.33 ID:9WBiq3dN.net] ざっくり言うと、 EternalForceBlizzard.bat C:\hoge とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ…かな。 >>82 どうでもいいけど全部大文字とかやめれ。 内容は知らんが死ぬほどダサい。
87 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 21:58:45.27 ID:rFmuVz+a.net] 今後は小文字にするよ。気が変わるかもしれんが。 forの括弧内のファイルは存在しなくてもスキップしない 例外はワイルドカードで対象はファイル /dだと対象はフォルダ ただそれだけの話だ
88 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 11:52:34.58 ID:dXptnPwJ.net] findstrの結果に文字列を連結したいのですがうまくいきません どうしたらよういでしょういか? cd /d %~dp0 type test1.txt | echo"りんご" & findstr "りんご" >> out.txt
89 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 14:00:46.60 ID:CTNOEPFx.net] call :a "りんご" test1.txt > out.txt & goto :eof :a echo %1 & findstr %1 %2
90 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 15:31:22.37 ID:dXptnPwJ.net] >88 ありがとうございます。 [りんご] [りんごを含んだ文] [りんごを含んだ文] [りんごを含んだ文] といった感じにでました。 [りんご][りんごを含んだ文] [りんご][りんごを含んだ文] [りんご][りんごを含んだ文] という感じはならないでしょうか?
91 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 15:58:11.82 ID:CTNOEPFx.net] call :a "りんご" test1.txt > out.txt & goto :eof :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
92 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 16:44:03.03 ID:dXptnPwJ.net] >90 おお!、うまくいきました。ありがとうございます!。 エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです。
93 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 17:08:05.17 ID:nMQEwTi4.net] 単に行数を少なくするだけの&の使い方で デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい
94 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 17:31:44.20 ID:CTNOEPFx.net] そういうのは質問者の方で調整よろしくお願いします
95 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:02:51.94 ID:nMQEwTi4.net] >>93 別に>>90 に文句言ってるわけじゃなくて 質問者が&に感心してたので、質問者にアドバイスのつもりで書いただけ
96 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:15:04.06 ID:CTNOEPFx.net] 言いたい事は分かります。 はっきり言って自分用のバッチはこんな書き方はしません。 行数を抑える為に繋いでるだけなんで。 バランス見て改行します。すみません。
97 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:27:13.64 ID:nMQEwTi4.net] って思ったら、質問者は&に感心してたわけじゃなくて 逆に&で簡単に書けない点が不満なんだな
98 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 19:15:10.41 ID:ak2Ch+AT.net] Basic言語では&は文字列結合演算子だが バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる 文字列結合演算子自体が存在しない
99 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 13:46:03.43 ID:HgbeZ9kI.net] 昨日の質問者です、たびたびすみません 複数ワードを処理しようとして call :a "りんご" test1.txt > out.txt :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i call :a "みかん" test1.txt > out.txt :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i としたところ、うまくいったのですが これが5項目くらいになると dos窓に「別のプロセスが使用中です」と表示されてしまいます。 なにかメモリ的なものがいっぱいになるのでしょうか? 回避方法はありますでしょうか?
100 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 15:17:41.73 ID:HwNiCy+r.net] 意味不明だが? @echo off call :a "りんご" test1.txt > out.txt call :a "みかん" test1.txt >> out.txt goto :eof :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
101 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 15:33:11.44 ID:HwNiCy+r.net] 今時、メモリ不足とか滅多に無いよ。 バッチで80byte文字列の一万個の配列変数とかやったことあるけど 問題なかったよ。
102 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 16:10:02.06 ID:HgbeZ9kI.net] >99さんの書式にするとうまくいきました おそらく私が :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i をいっぱい書いてしまったからかもしれません。
103 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 07:52:40.56 ID:ElV7iNpQ.net] 文字列:形式の「ラベル」はバッチファイル内でユニークにしてください。 今回のa:は共通サブルーチンなので、バッチ内で1つで良く、コードの最後に置きましょう。 サブルーチンを使う場合、メインルーチンのラストにはgoto :eof を書くようにしてください。これが無いとメインが終わった後にまたサブルーチン処理が行われます。
104 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 07:58:36.47 ID:ElV7iNpQ.net] またバッチ内で複数のサブルーチンを使いたい場合はそれぞれのサブルーチンの後にexit /bのコマンド行を付けてください。 exit /bによってメインルーチンに処理が戻ります。 これ無いと下の行に処理が遷移してしまいます
105 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 10:48:11.21 ID:4/xiY5nl.net] なるほど、丁寧な説明ありがとうございます。
106 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 11:16:25.14 ID:tFfJW+eT.net] cmdの基礎を勉強しろ あまりにも質問のレベルが低いとレスがつかないと思え
107 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:44:12.08 ID:Aqg/y48e.net] for %%I in (*.txt) do ( echo #%%I ) *.txt だけでなく *.txt2 などもあれば表示する .txt などの拡張子が3文字の時だけ4文字目以降を無視する 拡張子が2文字の時は問題なし バグか仕様か
108 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 14:24:30.26 ID:dbRt9asv.net] dir もね 他にもMS-DOS用の短い名前に反応したり ワイルドカードは、いやらしい動作をするね
109 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:05:34.51 ID:H4+bjsi1.net] dir c:\*1 でProgram Filesが表示されるやつか
110 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:23:46.61 ID:dbRt9asv.net] del *~* は危険
111 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 18:22:32.57 ID:VRMsBAkU.net] 8.3形式でもファイル見てるのね
112 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 21:48:09.10 ID:6/sri1HY.net] >>107 dirまでそうでしたか 知らなかったのは私だけで、みんな知ってたのですね DOSの特別実装仕様ということにしておこう
113 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 08:58:17.36 ID:2q4tHixb.net] *.txt2 のファイル名を dir/x で見ると *~1.TXT とか *~2.TXT になってるから dir *.txt dir *txt dir *xt dir *t で一致するということね
114 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 10:18:01.03 ID:vf3NvI2M.net] やっても良いPCなら OS インストール直後に >fsutil 8dot3name set で set 1 をして 8.3名作成を無効化するけど >fsutil 8dot3name strip を実際にはしたことがない俺チキン
115 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 18:32:35.83 ID:2q4tHixb.net] これでOK for %%i in (*.txt) do if /i "%%~xi"==".txt" echo %%i
116 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:00:03.97 ID:xTG5esR6.net] 以下のように「C:\hoge」の下の全ファイルのファイル名(拡張子は除く)を "aaa"に書き換えたいのですが、どのようなコマンドを書けば良いのでしょうか? ■書き換え前 C:\hoge │ あああ.txt │ いいい.xlsx │ ├─hage │ ううう.xml │ えええ.docx │ └─hige おおお.jpeg かかか.gif ■書き換え後 C:\hoge │ aaa.txt │ aaa.xlsx │ ├─hage │ aaa.xml │ aaa.docx │ └─hige aaa.jpeg aaa.gif
117 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:02:17.45 ID:xTG5esR6.net] すみません、higeの下のファイル名がずれてしまいました。 正しくは↓です。 ■書き換え前 └─hige おおお.jpeg かかか.gif ■書き換え後 └─hige aaa.jpeg aaa.gif
118 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:05:19.42 ID:xTG5esR6.net] それと、同一フォルダ内に同じ拡張子のファイルは複数存在しません。
119 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:08:58.74 ID:rXc7x2eo.net] for文とmv組み合わせでしょ サイト2個検索した方が聞くよりはやくできるとおもうけど なんで質問したの?
120 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 06:30:48.56 ID:Hb9ZoB2m.net] >>115 for /r "c:\hoge" %%i in (*) do ren "%%~fi" "aaa%%~xi"
121 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 09:50:06.91 ID:Hb9ZoB2m.net] 話変わるが for に /r を付けたら %~nxi の引用符が何故かとれない >for %i in ("abc") do @echo %~nxi abc >for /r %i in ("abc") do @echo %~nxi "abc" >for /r %i in ("abc*") do @echo %~nxi abc
122 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:03:42.75 ID:/Qrw8ZSg.net] 管理者として実行したいアプリ、さらに優先度を低で起動させる方法ありますか? さらにそれをスタートアップに登録したいんです
123 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:09:52.10 ID:e0NdV1CM.net] タスクに登録すれば?
124 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:57:12.10 ID:Hb9ZoB2m.net] start /LOW のコマンドのショートカットを スタートアップのフォルダに入れりゃいいんじゃね ショートカットの設定は管理者にして
125 名前:117 mailto:sage [2019/02/19(火) 20:46:10.94 ID:kZ82VOHH.net] >>118 ネットで探したのですが、バッチファイルをやり始めて日が浅いので使うコマンドの見当も付きませんでした。 今日職場で必要だったので聞いてしまいました。 >>119 助かりました。 どうもありがとうございます。
126 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:04:58.50 ID:GzdyKGwx.net] 聞いたほうが早いならそれでもいいと思うよ。
127 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 08:00:48.35 ID:vs0GH/UB.net] AzureAD、Office365を使うなら(Office365についてはGraphの使いこなしも必須)。バッチやVBSの代替としても必須。 「Powershellが出来る」だけではなくPowershellも活用し、なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素
128 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 08:01:45.93 ID:vs0GH/UB.net] すみません >>126 は誤爆
129 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 18:42:23.51 ID:WAQ7+H44.net] 環境変数の中に=があると 変数参照が変な事になってくるな... >set a=b=c >echo %a% b=c >echo %a=b% c
130 名前:デフォルトの名無しさん [2019/02/21(木) 19:45:58.39 ID:bhin4IwL.net] イコールは^つけないと特殊な動作するはず
131 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 20:25:05.21 ID:WAQ7+H44.net] 俺も最初はそう思ったんだけど... >set a=b^=c >echo %a=b% c
132 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:37:53.86 ID:m0MzDbdd.net] ならないんだけど?(win7) BATだと ECHO は <ON> です。 ダイレクトだと %a=b%
133 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:41:55.31 ID:oU3vU03f.net] 自分の環境でもならない win10
134 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 22:19:20.44 ID:WAQ7+H44.net] バッチでやって見た set a=b^=c echo %a% echo %a=b% 結果 b=c c set "a=b=c" でも同じ Microsoft Windows 10 Pro 10.0.17763 N/A ビルド 17763 >set a a=b=c ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\ore\AppData\Roaming
135 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 23:16:08.70 ID:WAQ7+H44.net] >>133 たった今、品質更新プログラムのインストールしました。 KB4487044 (OS ビルド 17763.316) なんと正常になったようです 結果 b=c ECHO は <OFF> です。
136 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:41:47.85 ID:7J1MA7z+.net] 1.batファイルで start ***.bat を実行してその***.batの中に call ***.exe があるんだけど 最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?
137 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:56:22.92 ID:1DJZnnpK.net] start "" /min "hoge.exe"
138 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 10:13:24.40 ID:2ZxzO4Nc.net] forで行取得して並列で処理してるんですが、一度にすべて実行するのでPCの負担が大きいです。 さらに回数指定するには、どうすればできますか?
139 名前:137 [2019/03/12(火) 11:09:28.51 ID:2ZxzO4Nc.net] すみません。説明不足でした。 初めにforでテキストを取得しsetに割り当て、全てをコマンドとして生成して並列処理しています。 並列で3回ずつ実行し終了をループ
140 名前:したいです。 [] [ここ壊れてます]
141 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:04:35.48 ID:6sZCRvoD.net] batを見ないと良く分からん
142 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:22:43.31 ID:JT0qCUVC.net] FORでサブルーチンをCALLするようにして、 3回呼び出されたら実行するようにするとかかな これ以上は元のバッチを見ないと何とも
143 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:35:25.41 ID:ollYoz5v.net] 並列処理ということは、非同期呼び出しを使ってるわけだから その呼び出した処理の終了をどうやって感知するかが肝 多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う
144 名前:デフォルトの名無しさん [2019/03/12(火) 20:57:10.17 ID:kFHhQjU8.net] んでもそんな高度な事がしたいならVCあたりで作っちゃいかんの?
145 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:11:57.06 ID:MfJOghkN.net] -- A.bat -- :loop if "%~1" == "" goto end call B.bat "%~1" shift goto loop :end -- B.bat -- -- if exist "%~dpn1_hoge.txt" ( set XXX=--option "%~dpn1_hoge.txt" ) -- A.batに複数ファイルをD&DしたときにB.batのif existで指定したファイルがA.batに入力したファイルに1つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます これを回避するにはどうすればいいでしょうか?
146 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:20:05.87 ID:Gms0hgp4.net] 毎回リセットしとけば? b.batの先頭でset xxx=を書くとかb.batをsetlocal〜endlocalするとか
147 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:26:03.45 ID:Gms0hgp4.net] すまん良く読んでなかった ファイルね b.batで生成するのかな? 削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?
148 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:37:26.49 ID:MfJOghkN.net] B.batは動画のエンコードに使っているバッチファイルの中身の一部で %~dpn1_hoge.txt があった場合はツールに追加のオプションを指定するようにしている感じです
149 名前:デフォルトの名無しさん [2019/03/19(火) 11:54:10.54 ID:hD2ftWP/.net] set day=3/19(火) if 1==1 ( echo %day% ) すみませんどなたか教えてください。 曜日の半角括弧のせいでif文が閉じられてしまうんだけど どうやってエスケープすればいいんでしょうか?
150 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:02:29.16 ID:9bBZVsPM.net] ^) バッチ エスケープで検索すりゃすぐわかるだろ
151 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:50:21.44 ID:Juttg7oZ.net] 括弧はpsのワンライナーでも嵌まる箇所
152 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:57:54.34 ID:dDtGuicR.net] >>147 こういう方法もある 変数dayの中に、二重引用符がなければ set day=3/19(火) if 1==1 ( for /f delims^=^ eol^= %%i in ("%day%") do echo %%i ) これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫
153 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 13:01:36.48 ID:dDtGuicR.net] echo.%%i にしたらもっといいかも
154 名前:147 mailto:sage [2019/03/19(火) 13:11:02.99 ID:hD2ftWP/.net] set day=3/19(火) if 1==1 ( echo %day:~0,6%^)% ) これでいけました。 >>150 のも今後の参考にさせてもらいます。ありがとうございました
155 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 13:19:49.65 ID:dDtGuicR.net] 最後の % は要らんぞ
156 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 20:28:12.65 ID:xvBmkr0d.net] >>147 echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある。 これだとほとんどすべての記号がそのまま出力される。例外として「!」は「^!」で、「%」は「%%」で、「^」「^^」などは要エスケープ。 setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set "day=3/19(火)" if 1==1 ( echo !day! )
157 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 22:00:01.63 ID:dDtGuicR.net] ! とか ^ があると setlocalの前に変数代入した方が楽だな
158 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 22:34:42.36 ID:/eguYGP5.net] 一番厄介なのって [ ] だっけ?
159 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 01:32:50.66 ID:3Vd/nBOR.net] 個人的には全角
160 名前:スペースと() [] [ここ壊れてます]
161 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 21:56:31.90 ID:HPyHK69o.net] day=off だと echo されない
162 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 23:03:18.28 ID:HPyHK69o.net] 遅延モードでのエスケープの動作が面白い setlocal enabledelayedexpansion set "a=^x ^^ ^!" set "b=^x ^^ ^y" set "c=^x ^^ ^y" ! echo a=!a! echo b=!b! echo c=!c! a=x ^ ! b=^x ^^ ^y c=x ^ y
163 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 22:17:03.83 ID:dRPi9Fbo.net] コマンドプロンプトで以下のpowershellコマンドを実行すると曜日が英語で表示されるのですが、 ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか? 曜日の判定に使いたいのです。 C:\>powershell "(get-date).DayOfWeek" Wednesday
164 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 22:22:48.75 ID:kh6Z72O0.net] >>160 for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"') do set "hoge=%%i"
165 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 23:46:13.28 ID:dRPi9Fbo.net] >>161 ありがとうございます!それでバッチリでした。 ってかレスはやっ!( ̄□ ̄;)
166 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 14:41:43.82 ID:SVkPhkuc.net] 読み取り専用属性付加と解除についてお願いします ATTRIB +R hoge.txt この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが ATTRIB +R *.txt とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?
167 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:11:44.94 ID:SVkPhkuc.net] >>163 です バッチファイルにファイル名を指定してしまうと同一名のファイルしか処理できませんが ファイル名が異なっていてもドロップしたファイルのみ属性変更したいのです
168 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:30:16.10 ID:Tk94P2Iw.net] >>163 "*.txt "が邪魔
169 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:59:23.64 ID:SVkPhkuc.net] >>165 ATTRIB +R これだけでいいのでしょうか 試してみましたが一つのファイルをバッチファイルへドロップすると ディレクトリ内の全てのファイルが属性変更されてしまいます
170 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 16:34:46.90 ID:HAjihGMm.net] >>166 ATTRIB +R %1 引数のファイルだけ属性を変える 引数が無い場合は全てのファイルになるので ガードは付けた方が良いと思う
171 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 17:06:43.84 ID:SVkPhkuc.net] >>167 %1 とすることでドロップした一つのファイルが読み取り属性変更できるようになりました 二つとか三つとか複数ファイルはできないのですよね 皆さんありがとうございました
172 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 17:54:55.66 ID:DeBFB2/b.net] ATTRIB +R %* とすると複数ファイル可
173 名前:デフォルトの名無しさん [2019/04/17(水) 18:03:53.01 ID:mAjziF7r.net] バッチファイルの図形プログラミング作ったら広告収入入ると思いますか?
174 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 18:18:21.55 ID:QABBLuNd.net] 俺のところじゃ>>169 はエラーになる for %%i in (%*) do attrib +r %%i まあファイル名によってはこれもダメだけど
175 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 19:24:10.99 ID:SVkPhkuc.net] >>169 >>171 みなさんありがとうございます 助かりました
176 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 21:07:05.52 ID:3cAVwUGz.net] 複数ファイルドロップするなら shift でループが簡単だと思うけど何か落とし穴ある?
177 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 19:59:48.99 ID:pUSpmyse.net] ファイルドロップで落とし穴があるとしたら >>45 みたいな引数の時 >>48 を参考にすると @echo off set "a=%cmdcmdline:"=*%" set "a=%a:~0,-1%" & set "e=" set "c=" & for /f "tokens=2* delims=*" %%i in ("%a%") do set "c=%%j" :x set "a=" & for /f "tokens=*" %%i in ("%c%") do set "a=%%i" if "%a:~0,1%"=="*" (set "d=*") else set "d= " set "b=" & set "c=" for /f "tokens=1* delims=%d%" %%i in ("%a%") do set "b=%%i" & set "c=%%j" if defined b set e=%e% "%b%" & goto x for %%i in (%e%) do attrib +r %%i でもこれファイルドロップでしか使えない
178 名前:デフォルトの名無しさん [2019/04/19(金) 16:41:41.89 ID:nzBF9sby.net] batのコマンドのタイトルバーに 「管理者: 」 の表示を消すこと出来ないのでしょうか?
179 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 17:41:11.03 ID:HG96JCXu.net] muiファイルいじるしかなかったような
180 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 18:58:50.77 ID:FmrBk+Vp.net] スレチと怒られそうだが --- change_wnd_title.uws ------ DEF_DLL SetWindowTextA(HWND, STRING):BOOL:user32.DLL DIM old_title = PARAM_STR[0] DIM new_title = PARAM_STR[1] DIM idwnd = GETID(old_title) IFB -1<idwnd THEN SetWindowTextA(IDTOHND(idwnd), new_title) ENDIF --------- C:\UWSC\UWSC.exe C:\TEST\change_wnd_title.uws "管理者: test" "ABC" を管理者権限で実行 「管理者:」 と「test」 の間にスペースが2つある点に注意 べつにWin32apiが使えればほかのスクリプトでもいいが すでに配布が終了している(?)UWSCをすすめるのは とてもにコンパクトで気軽に試しやすいため 以下のレスにあるDL先は公式リンク 使うのはFree版でよい egg.2ch.net/test/read.cgi/software/1533818531/3
181 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 21:14:57.50 ID:5yrPogsy.net] >>175 例えば d:\hoge\a.bat を実行するなら ショートカットの新規作成でコマンドは cmd /c start "ABC" /d "d:\hoge" a.bat ショートカットのプロパティで 実行時の大きさは「最小化」 詳細設定で「管理者として実行」 このショートカットを実行すると a.bat が管理者として実行されて タイトルは ABC のみになる
182 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 21:49:09.78 ID:5yrPogsy.net] >>178 念のため書いておくが バッチの中で title xxx と書くと「管理者:xxx」 となるので台無し バッチの title コマンドは消せ それが出来ないなら俺は知らん
183 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 23:47:56.76 ID:UTkV4PFm.net] あのさ もう設計書はあるからバッチ作ってって言われて設計書見たんだが 「%0\..\xxx\yyy.batをコールする」とか書かれてて腰折れそうなんだけど…
184 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:03:36.64 ID:oEi+Bse9.net] やりたい事が書いてあるかどうかだな 設計書作る手間で自分でかけとも思うけど 外注なら設計書から作りましょうねと諭して工数確保だな
185 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 00:08:13.21 ID:vpsjY4OY.net] >>181 まあやりたい事分かるからこっちで直して これでいいですよね?って聞くつもりだけど 細かく書いといて間違えてるのやめてほしい…
186 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 03:49:52.33 ID:C+CxU9Uj.net] >>175 隠しておかないと、悪いことしてるのがばれちゃうもんな
187 名前:179 mailto:sage [2019/04/20(土) 04:50:04.97 ID:HO8cTApa.net] たぶん>>121 の奴だろ 胡散臭い
188 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:17:28.92 ID:Aqd0ZKZB.net] forfilesは遅いこと フォルダのファイル数が多いと極端に遅くなる
189 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 20:18:12.49 ID:SEUESNkj.net] >>174 exit で終了しないと不味いな…
190 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 09:53:38.49 ID:3q/iti6Z.net] バッチとは違うけど、Microsoftさまの新しいターミナルアプリ「Windows Terminal」 https://forest.watch.impress.co.jp/docs/news/1183011.html 期待しても良いのかしら
191 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 22:44:07.08 ID:6yW2addd.net] >>187 windows10のみだと俺は使えないや [] [ここ壊れてます]
193 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 22:45:41.01 ID:o7I87B0d.net] >>188 そりゃMacやLinuxでも使えるようにする性格のアプリではないだろ
194 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 23:18:47.67 ID:6yW2addd.net] >>189 どういう意味なのかな? 俺が読んだかぎりではwindows10のみと判断したんだが
195 名前:デフォルトの名無しさん mailto:sage [2019/05/08(水) 23:59:34.57 ID:PAJNmCOy.net] >>190 MacやLinuxで使えないから嫌だってお前は言ってるんだよ
196 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 00:09:50.10 ID:Q5GOiLDw.net] build 10.0.18362.0以上でVS2017必要みたいね Win8とかじゃ使えない
197 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 00:35:06.30 ID:e/QFUb7b.net] win7/8.1は切捨てか さすがMS
198 名前:デフォルトの名無しさん mailto:sage [2019/05/09(木) 00:47:39.20 ID:W7EsCFlC.net] >>193 サポート終了って言ってるんだから当たり前じゃね?
199 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 02:08:44.94 ID:5JVQU2Kx.net] スレチかもなのですが、「コアを吐く」ってどういう意味なのでしょうか?
200 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 02:12:53.15 ID:ChT5ZnKi.net] コアダンプのことじゃね
201 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 00:27:10.87 ID:p20+5ZYI.net] Win10で、.(ドット)から始まる4文字以上のフォルダを再帰的に削除したいのですがうまくいきません for /d /r %%d in (.????*) do rmdir /s /q "%%d" フォルダ名をスペースおきに書くと削除できますがワイルドカードを使って処理できないものでしょうか
202 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 11:10:45.58 ID:TZwQ5fCi.net] for /f %%d in ('dir /s /b ^| findstr \\\.....') do rmdir /s /q "%%d" とか?
203 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 11:21:46.43 ID:TZwQ5fCi.net] >>198 dir /s /b /ad だった
204 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 11:40:23.60 ID:C4jenAHt.net] >>197 for /d /r %%i in (.*) do set "a=%%~fi" & call :x "%%a%%" pause & goto :eof :x set "b=%~nx1" if not "%b:~4,1%"=="" rd /s /q %1
205 名前:197 mailto:sage [2019/05/19(日) 12:35:02.55 ID:p20+5ZYI.net] >>198-199 >>200 ありがとうございます! rmdirをechoに置き換えて確認してみましたところ、>>200 様ではフォルダ名を取得できませんでした >>198-199 様で対象にしたいフォルダ名を取得できましたのでこちらを使わせていただきます ありがとうございました
206 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 13:00:03.54 ID:C4jenAHt.net] >>201 なにを言ってるのか意味不明だな? >>200 の rd を echo rd に変えたのなら問題ないだろ >>198 を使うなら /f "delims=" にしろよ? あと、>>198 だと \.12\abc とかも消えるぞ
207 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 13:23:52.91 ID:C4jenAHt.net] 分かった 隠し属性かよ
208 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 07:05:59.13 ID:/nt8UTBS.net] for /f "delims=" %%i in ('dir/adh/s/b .*') do ( set "a=%%~nxi" & call set "a=%%a:~4,1%%" if defined a if exist "%%i" rd/s/q "%%i")
209 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 10:45:56.66 ID:nyCVecKy.net] 7-Zipスレからこちらに誘導されてきました バッチファイルを実行して 指定したフォルダを7z圧縮し別の指定した場所へ保存する方法教えてください
210 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 10:55:25.50 ID:QHGhwB6i.net] >>205 7-zipのコマンドラインオプションみましたか?
211 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 11:03:44.74 ID:nyCVecKy.net] >>206 見ていません
212 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 11:10:19.45 ID:nyCVecKy.net] >>206 今見ています
213 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 17:24:55.92 ID:iePtiDR/.net] >>205 7-Zip のパスは自分の環境に合わせる @echo off path C:\WINDOWS\system32;C:\WINDOWS; path C:\Program Files (x86)\7-zip;%path% set /p i=圧縮するフォルダのフルパス= set "i=%i:"=%" set /p o=書庫を作成するフォルダのフルパス= set "o=%o:"=%" set /p n=書庫名(拡張子なし)= for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA" 7z a "%o%\%n%.7z" "%d%" pause
214 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 18:42:28.21 ID:
] [ここ壊れてます]
215 名前:nyCVecKy.net mailto: >>209 ありがとうございます @echo off path C:\WINDOWS\system32;C:\WINDOWS; path C:\Program Files\7-Zip;%path% set /p i=Z:\TE= set "i=%i:"=%" set /p o=Z:\zz= set "o=%o:"=%" set /p n=a= for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA" 7z a "%o%\%n%.7z" "%d%" pause 7-Zip のパス C:\Program Files\7-Zip ZドライブTEフォルダを圧縮 Zドライブzzフォルダに作成 書庫名aにしてみましたが動作しませんでした 誤った箇所ありますでしょうか [] [ここ壊れてます]
216 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 19:22:25.25 ID:4n4gfKEy.net] >>210 書き換えないといけないのは7zipのパスのところだけであとのところはいじっちゃだめ なので↓をメモ帳に貼り付けて適当な名前のbatファイルに保存が正解 @echo off path C:\WINDOWS\system32;C:\WINDOWS; path C:\Program Files\7-Zip;%path% set /p i=圧縮するフォルダのフルパス= set "i=%i:"=%" set /p o=書庫を作成するフォルダのフルパス= set "o=%o:"=%" set /p n=書庫名(拡張子なし)= for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA" 7z a "%o%\%n%.7z" "%d%" pause
217 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 19:28:03.67 ID:iePtiDR/.net] >>210 コンソール入力するのが嫌なら set i=Z:\TE set o=Z:\zz set n=a
218 名前:デフォルトの名無しさん mailto:sage [2019/05/26(日) 19:35:30.91 ID:nyCVecKy.net] >>211 >>212 これでできました @echo off path C:\WINDOWS\system32;C:\WINDOWS; path C:\Program Files\7-Zip;%path% set i=Z:\TE set o=Z:\zz set n=a for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA" 7z a "%o%\%n%.7z" "%d%" pause 自分のような者に教えていただきありがとうございました
219 名前:デフォルトの名無しさん mailto:sage [2019/05/30(木) 23:24:33.44 ID:D3n586fF.net] CMDの画面でこういうのを入力して実行したら FOR /L %I IN (1,1,20) DO @CALL ECHO %I 画面の上のタイトルに文字が うじゃうじゃ出て来るのはなぜ?
220 名前:デフォルトの名無しさん mailto:sage [2019/06/01(土) 22:51:37.17 ID:cR7U/Ve2.net] 最近の発見 remの前に空白をおける : でラベルを示すが、:の前後に複数の空白、タブ、全角空白があってもよい : タブ abc またラベルの後の空白以降の文字列は無視するのでコメントを書ける : abc エラーの場合 まあ、あまり使うところないけど
221 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 00:30:45.28 ID:0ZBCelud.net] 最後のは割と便利そうだけど 現場だとコメントはREM使えっていうコーディング規約に阻まれそうだw
222 名前:デフォルトの名無しさん mailto:sage [2019/06/02(日) 03:07:05.57 ID:rFF/uYB6.net] >>214 そもそも call の引数はバッチファイル名かラベルだ。 それ以外の、内部コマンドや外部コマンドじゃない。 そんな使い方、help のどこにも書いてない。 一見、正常に動作している様に見えるが、 内部では子プロセスが異常終了している。 だからタイトル名に子プロセスの残骸が残る。 call set なども動作はするが邪道。
223 名前:デフォルトの名無しさん mailto:sage [2019/06/04(火) 23:08:45.76 ID:YyzuHNes.net] >>215 REM は「コマンド」だから前に空白が置ける。それは当然として。 ラベルをコメント代わりに使うのは止めとけ。 for や if コマンドの中で「インテンドを使って」コメントに使おうとすると弾かれる。 大人はバッチのコメントは REM で書くものだ。 Intel のドライバーインストーラーのバッチは奇麗だと思うぞ。
224 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 19:33:03.04 ID:ESLww06V.net] 変数のサイズの最大値って何バイトなんだろう @echo off setlocal enabledelayedexpansion set "a=x" for /L %%i in (1,1,12) do set "a=!a!!a!" set "b=x" for /L %%i in (1,1,13) do set "b=!b!!b!" if !a!==!b! (echo "a=b") else echo "a<b" pause 結果は "a=b"
225 名前:デフォルトの名無しさん mailto:sage [2019/06/09(日) 20:37:25.93 ID:ESLww06V.net] >>219 8187 バイトかな? 半端な値だな...
226 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 07:14:20.96 ID:24zpPZFc.net] https://www.atmarkit.co.jp/ait/articles/1510/30/news041.html 内部的には1つの変数当たり最大32767文字 コマンドプロンプトの入力行は最大で8190文字 システム環境変数やユーザー環境変数の最大値は約2000文字(setxコマンドでは最大1024文字) @echo off &setlocal set a=x set b=x set /a i=2 :LOOP set a=%a%x echo %i% if not %a%==%b% ( set b=%a% set /a i+=1 goto :LOOP ) pause 速くて正確ではないけど4093
227 名前:くらいで落ちた コマンドの制限に掛かるみたいやね [] [ここ壊れてます]
228 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 07:46:35.61 ID:acT05/Jv.net] >>221 ありがとう、参考にします 1行当たり8190文字がネックだね
229 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 15:28:36.17 ID:q9TwxOtc.net] >>221 こういうのって統一して何バイトって決めないとやばくないのかな windowsバージョン、英語、日本語、ヒンズー語など言語で微妙に変化すると、 おかしなことがおきたり、ウィルスの侵入口に利用される
230 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 18:52:33.54 ID:acT05/Jv.net] 遅延展開では変数名1文字なら値は8189文字まで。半角全角は無関係。 変数名が1文字増えると値の最大値は1文字減る set "a=!b!" の様に二重引用符で囲むと最大値は2文字減る 遅延じゃないと a=%b% 以外のコマンドラインの文字数分が更に減る 変数 a が5000文字の場合 if %a%==%a% echo ng は落ちるが if !a!==!a! echo ok は落ちない
231 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 18:58:22.71 ID:OlE51f/u.net] >>223 そもそもそんなギリギリまで使う方がおかしい あとウィルスとかのセキュリティの話はまた別の話
232 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 19:19:36.75 ID:acT05/Jv.net] cmdは既に穴だらけなんで
233 名前:デフォルトの名無しさん mailto:sage [2019/06/10(月) 20:08:18.95 ID:8z0TGIdq.net] 穴だらけなのかもしれないが、外部に開いた穴は無いんで 悪用されるにはその前に侵入を許してしまってる必用がある まあ侵入されたあとにコマンドプロンプトを使うようなウィルスはあるかは知らないけど
234 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 05:43:03.21 ID:mwwG6pNT.net] ワンラインで8kか フルパス200文字位のファイルを40個D&Dしたらもうパンクか ヘタレ過ぎる
235 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:08:50.98 ID:AKGG1UAL.net] 初心者故説明不足でしたらご指摘ください。 調べてもわからなく、ご教示いただけないでしょうか。 やりたいこと Windowsアップデートのインストール一覧のうち 2019年分のみ抽出したい。 やったこと 一覧を取得するコマンドで情報をテキストファイルに出力。 その後findstrで2019分のみを抽出しようとしたけど 抽出出来なかった。 実行コマンド Windowsアップデート一覧取得 wmic qfe get InstalledOn,HotFixID > aaa.txt 抽出コマンド findstr "2019" aaa.txt 抽出コマンド実行後、結果が帰って来ませんでした。 なぜ結果が帰って来ないのかが全くわかりません。 どうか、対処法をご教示いただけないでしょうか。
236 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:21:50.48 ID:mwwG6pNT.net] ユニコードだからじゃない? type aaa.txt > aaa1.txt aaa1.txt でやってみろ
237 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:30:25.48 ID:SBjduyI+.net] wmicはリダイレクトするとUTF16LEになるから 230みたいに文字コード変換するか、パイプで wmic qfe get InstalledOn,HotFixID | findstr /n "2019"
238 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:31:56.22 ID:SBjduyI+.net] あ、/n付けちゃったけどまぁいいか
239 名前:デフォルトの名無しさん mailto:sage [2019/06/11(火) 16:53:09.70 ID:AKGG1UAL.net] >>230 >>231 ご教示頂きましてありがとうございます! 文字コードは盲点でした。もっと勉強します。 教えて頂いたコマンドで自身の望む結果が帰って来ました。 ありがとうございます!
240 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 10:13:44.37 ID:P3O2UGUp.net] Explorerから「送る」SendTo で使うバッチの中の pushd "%~dp1" が失敗するケースて有り得る? 送るから使うって事はアクセス出来てるはずなので失敗する事はないと思うんだけど pushd "%~dp1"||exit とか失敗した場合の処理書いといた方が良いのかな
241 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 12:37:34.91 ID:qazE1A0w.net] >>234 パスの中に全角スペースが入っていて半角スペースが入ってない場合なんかは失敗するんじゃないかな
242 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 14:43:51.
] [ここ壊れてます]
243 名前:05 ID:rRFcU9uI.net mailto: >>234 フルパスに半角スペースが無くて、それ以外の文字で区切られた場合、 区切られた位置が親フォルダだったら、 さらにその親に移動するだけで、エラーにもならない [] [ここ壊れてます]
244 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 14:50:46.43 ID:P3O2UGUp.net] >>235 その問題、失念してた。ありがとう パスに半角スペースが無くて、全角sp" "、コロン","、セミコロン";"、ハット"^"、イコール"=" の何れかが有る時だね 半角sp有る無し関係なく引数全部""括るようにすれば良いのにまだこの問題残ってたんだね 意図しない動作ではあるものの最初にデリミタ文字を含むフォルダの親フォルダにカレント移動して pushd 自体は成功する pushd が失敗する事例を知っていたら教えて欲しい この問題は対応面倒なのでパスに半角スペースを含めるようにして対処するよ
245 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 15:04:31.95 ID:rRFcU9uI.net] 引数いくつか知らんが pushd "%~dp2" は失敗するだろ。 引数1個限定なら %2 が有れば exit するとか。 あるいは >>48 を参考に
246 名前:234 mailto:sage [2019/06/13(木) 16:36:42.36 ID:P3O2UGUp.net] 送るから使う前提で pushd "%~dp1"||エラー処理 のエラー処理を書く意味あるかな?てのが聞きたかった事なんだ まあおまじない的にpause&exitしとくよ。ありがとう
247 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 17:10:58.72 ID:rRFcU9uI.net] 引数全部で if "%~dp1"=="%~dp2" if "%~dp1"=="%~dp3" if "%~dp1"=="%~dp4" とか確認すりゃ問題ない
248 名前:デフォルトの名無しさん mailto:sage [2019/06/13(木) 17:24:03.99 ID:rRFcU9uI.net] >>240 でもファイル名使うとダメだな
249 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 15:25:04.04 ID:/ScwnRxc.net] 誰もツッコミ無しか SendTo とか D&D は何もしなくても自動的に 送り側のディレクトリに移動するんだが
250 名前:デフォルトの名無しさん mailto:sage [2019/06/14(金) 15:52:59.01 ID:/ScwnRxc.net] SendTo にバッチ本体じゃなくて ショートカットを入れたのかね でもプロパティの作業フォルダを空にすればいい 怪しげな引数を利用するよりマシだろ
251 名前:デフォルトの名無しさん [2019/06/15(土) 09:44:04.71 ID:wrdBniJb.net] 7-ZIPの 7za.exe でワイルドカード使ったときにサブフォルダを除外するにはどうしたらいいでしょうか? -r-を付けてもなぜか効かないんですが 7za.exe a XXX.zip -r- *
252 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 12:34:19.95 ID:/kIGVJHV.net] >>244 7zaは経験ないが7zと同じだろう 引数に*としたらサブディレクトリも含む サブディレクトリを指定したら、それ以下の全部を含む そこでスイッチは関係ない ファイルだけ圧縮したいなら @echo off path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS; if exist archive.7z del archive.7z set a= setlocal enabledelayedexpansion for %%i in (*) do set a=!a! "%%i" 7z a archive.7z !a%! pause
253 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 12:36:06.42 ID:/kIGVJHV.net] ああ、すまん .zip に置き換えて
254 名前:デフォルトの名無しさん mailto:sage [2019/06/15(土) 13:27:41.74 ID:/kIGVJHV.net] >>245 はファイル名に!^があると誤動作するので @echo off path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS; if exist XXX.zip del XXX.zip for %%i in (*) do 7za a XXX.zip "%%i" pause にした方がいいかもね ちなみにInfo-ZIPのzip.exeでは zip XXX.zip * だけでいいが空のサブディレクトリを作成する
255 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 08:25:16.99 ID:gSWoSWwj.net] .commandでターミナルを開いてpython3 /hoge/test.pyを入力、エンターを送信してpyファイルを実行したいのですがご教授ください。m(_ _)m echo python3 /hoge/test.pyとするとターミナルに入力はされるのですが、pythonが実行されません。 ちなみに.batでは、 cd C:\hoge\ cmd /k python test.py でpythonを実行する事ができました。 .commandで同じ事をするにはどうすればいいでしょうか?
256 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 13:48:44.19 ID:gSWoSWwj.net] 248です 解決しました。m(_ _)m echoなんか付けずに python3 /hoge/test.py でpythonが実行できました。ありがとうございます。
257 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 18:30:49.93 ID:/bUEZ7B5.net] バッチファイルからbeep音を出す echo ^G >
258 名前:beep.bat ^G は コントロールキーとG beep.batを実行すると音は出るが、エラーも出るので type beep.bat のほうがよい beep.bat 2>nul でエラーは消えるはずだが、なぜか音も出ないことがある こういう基本コマンドがなぜかない [] [ここ壊れてます]
259 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 21:28:51.00 ID:KEFOQI4b.net] >>250 beep.bat でエラーが出るのは当然 beep.bat の中身は 「あ」 と一文字書いてあるのと同じようなものだから コマンドになってない だから echo ^G> beep.dat echo type beep.txt> beep.bat とするか echo @echo ^G> beep.bat とすれば beep.bat実行でエラーは出ない ちなみに@echoとしてechoの頭に@をつける理由は そうしないと、 実行コマンドが表示される時点で一回音が鳴り echo が実行されることによって音が鳴るので 結果として2回音が鳴ることになるため
260 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 22:13:21.14 ID:KEFOQI4b.net] 無料のエディタでも制御文字を扱えるものがあるので そういったものを使うと便利かと思います たとえばNotepad++では制御文字を表示することができます https://www.howtonote.jp/notepadplusplus/install/index10.html 入力は編集-文字コード表から サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした (自分はユーザではなく詳しくないので実際はあるのかもしれない) sakura-editor.sourceforge.net/htmlhelp/HLP000255.html
261 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 22:46:13.03 ID:kzHmUXK8.net] トリッキーだが、コントロールコードを直接書かないで実現することもできるね ここの過去ログ%11にあったけど for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I echo %BEL%
262 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 23:09:42.80 ID:+j+1wiRe.net] バッチにバイナリエディタで入力したら どんな値でも変数に代入出来るのかな?
263 名前:デフォルトの名無しさん mailto:sage [2019/06/17(月) 23:10:40.48 ID:KEFOQI4b.net] >>251 訂正 誤:echo type beep.txt> beep.bat 正:echo type beep.dat> beep.bat
264 名前:デフォルトの名無しさん mailto:sage [2019/06/18(火) 17:34:44.10 ID:eep67jJ0.net] cls|choice 1>nul 2>nul
265 名前:デフォルトの名無しさん mailto:sage [2019/06/18(火) 19:33:08.53 ID:KnqBLmEX.net] >>251 なるほど、どっちもありですね echo ^G> beep.dat echo type beep.dat> beep.bat echo @echo ^G> beep.bat @echo のこんな使い方は初めて見た、知らなかったです
266 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 06:51:19.02 ID:dygsK1bo.net] Windows Terminal早速試せるみたい。 Microsoft’s new Windows Terminal now available to download for Windows 10 - The Verge https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features
267 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:23:35.72 ID:Lc+3aX4/.net] >>258 そこに書いてある Microsoftはまた、Linux用のWindows Subsystem(WSL)の パフォーマンスを向上させるために、 完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます。 こっちの方が気になるなあ
268 名前:デフォルトの名無しさん mailto:sage [2019/06/23(日) 12:41:20.55 ID:8sWJbccc.net] WSL2でしょ
269 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 00:46:23.52 ID:6j3DQJ1O.net] Windows7からWindows10に変えたら、IME単語登録用ソフトのIMECが動かない。 神は死んだ・・・
270 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:20:48.71 ID:sBqqHKRF.net] chcp 65001 if "hoge"=="hoge" ( echo あああ echo いいい ) pause 上みたいなbatをUTF-8で保存して実行すると 'o' is not recognized as an internal or external command, と言われてエラーになるんですが何故ですか?
271 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:23:12.67 ID:sBqqHKRF.net]
272 名前:echoの前に半角スペース3つです [] [ここ壊れてます]
273 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:52:58.06 ID:O4gheXA8.net] 良く分からんが >>258 の奴でやると もしかしたら上手くいくかもね
274 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 19:58:43.79 ID:O4gheXA8.net] chcp 65001 if "hoge"=="hoge" ( echo あああ& rem echo いいい ) pause
275 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:17:53.34 ID:O4gheXA8.net] 行末が非asciiだと不味いようだ
276 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:18:26.26 ID:sBqqHKRF.net] >>265 レスありがとうございます それだとエラーは出なくなりました でもなんでこんな訳のわからない動作をするのかがわかりません
277 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:34:02.78 ID:O4gheXA8.net] 上手く動作しないという事はバグじゃないですかね それ以上はcmdの作者じゃないので分からん
278 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:49:18.67 ID:yTOc80/J.net] そもそもUTF-8保存バッチなんてまともに動くの見た事無い。 バッチはUS-AsciiかシフトJIS保存が安全。いくらchcpでコードページが動かせようとも
279 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 20:51:13.72 ID:yTOc80/J.net] "シフトJIS(932) だけ? いいえ、そんなことはありません。例えば、EUC-JP(20932) も可能です。しかし、Unicode(1200)、UTF-7(65000)、UTF-8(65001)、JIS(50220) はダメです。 なので、実際上?は、シフトJIS(932) だけのようなものです。" scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html
280 名前:デフォルトの名無しさん mailto:sage [2019/06/25(火) 21:18:10.64 ID:O4gheXA8.net] ユニコードでしか表示できない文字を表示したいならともかく "あああ" とか "いいい" じゃ全く意味が無いな
281 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 07:19:54.19 ID:/FHvjGPn.net] やはりbatをUTF-8で動かすと色々不安定みたいですね 素直にShift_JISで書くことにします
282 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 08:01:27.89 ID:5bijRuYR.net] ASCIIで書いてもええんやで?
283 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 08:13:25.58 ID:QearoGxm.net] Asciiで"あああ"や"いいい"が表せるかバカ
284 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 14:39:32.78 ID:wh3oZ78w.net] シフトJISで表せない文字の例 @echo off chcp 65000 > nul set a=+nddRZwDA- chcp 932 > nul set a1=%a:~0,1% set a2=%a:~1,1% set a3=%a:~2,1% echo 森%a1%外の「%a1%」 echo %a2%田百閧フ「%a2%」 echo アクセント符号付きのアルファベット「%a3%」 pause > nul
285 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 19:26:37.84 ID:jdth62TN.net] ハードコーディングする必要ないだろ…
286 名前:デフォルトの名無しさん mailto:sage [2019/06/26(水) 20:16:33.91 ID:wh3oZ78w.net] ユニコードのバッチでいいなら必要ないな echoは行末に半角スペース付けると多分ok setは二重引用符で囲めばいい
287 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 00:26:23.36 ID:65pELY4n.net] 会得したところで今後の人生に役に立たない、もしくは自分の仕事を受け継いだ「標準的な知識の」人間に理解できないことはしない方がいい。 一子相伝の拳法とかじゃねーんだから。 バッチスクリプトに限らず、仕事でそういうことを意識できない奴は、大抵、後から見て自分自身でも読めないコードを書くものだ。
288 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 00:27:58.62 ID:65pELY4n.net] このスクリプトは自分で終わり… とかいう書き捨てスクリプトなら大いにやって良いと思う。 使い終わったらちゃんと捨てとけよ。
289 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 04:32:59.89 ID:41DSIiqO.net] この 低レベルに合わせる事こそ唯一の原則 みたいな風潮すごいイヤ こんなとこまで啓蒙しなくていいよ気持ち悪い
290 名前:デフォルトの名無しさん mailto:sage [2019/06/27(木) 04:53:0
] [ここ壊れてます]
291 名前:5.65 ID:6UZ42pkx.net mailto: >>279 板汚し失礼した。使わないが捨てる。 よく考えたらutf-8のバッチで変数に代入した後、 sjisのバッチに移ればいいだけだった。 utf-8のバッチは不安定だが代入だけなら大丈夫だろう。 なんで気がつかなかったんだろう。 >>280 ありがとう。 [] [ここ壊れてます]
292 名前:279 mailto:sage [2019/06/28(金) 00:34:45.44 ID:khpSyJhs.net] >>280 低レベルに合わせるわけじゃねーよ。 現代的なスクリプト言語を学んできたような人間に対して 「バッチスクリプトだけで通じる特殊で小賢しいハック」 を読ませたり書かせたりするべきじゃない、自分だけに留めとけ、結局誰得になる、って話が何故分からないかな? 今日も 「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」 なんつったアホンダラを叱りつけたところだ。 「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ。そりゃ、制御コードは「お前のエディタでは」見えないよ。アホか。 制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した。 実際、実環境でこっそりテストしてみたらやっぱり処理はコケた。
293 名前:279 mailto:sage [2019/06/28(金) 00:39:45.58 ID:khpSyJhs.net] で、バッチにもイディオムがある。 「AをしたいときはBと書け」ってやつ。 そういうものは、たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない。 つまり、 ・言語や環境が想定している範囲内ならやってよし。むしろやれ。 ・範囲外ならやるな。やるなら自己責任で他人に迷惑を掛けない程度に。 ということ。 これはどんな言語やシステムにも言えること。
294 名前:279 mailto:sage [2019/06/28(金) 00:51:59.74 ID:khpSyJhs.net] もっと言うと、何かを開発するときにまず最初にやることってのが 「この言語や環境はどこまで想定しているのかを調べる」 だったりする。 自分のやりたいことに沿ってくれるかくれないのか。 くれないなら処理の一部だけやらせるに留めるなり、最初から使わないなり、そういう選択をする。 言語や環境に縛りがある場合なら、責任者の言質を取るなり、書面で誓約を取ってから作る。 見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい。 「このコード書いた奴、死ねばいいのに」って言われても俺には関係ない、くらいの根性腐った奴ならそうすればいい。
295 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 04:47:52.79 ID:+wrrcV+u.net] だからキモイって 創価学会員並みにキモイ 狂信者の啓蒙活動と同じ こんなところではなくおまえの会社でやってろ
296 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:00:46.98 ID:n6DQpX/4.net] しかしWin環境はテキストのBOMマーク推奨なのに、for /fで読み出しするとBOMをわざわざ表示するのバカだよな。 過去の検討不足がまんま固定してる
297 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:22:18.87 ID:utv5/5Cv.net] 面倒くさい奴が一人いるな 何を書こうが勝手だが、ここはお前の職場じゃないぞ
298 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 07:41:24.76 ID:utv5/5Cv.net] >>286 BOM付きのファイルは一行目を空行にしている。 バッチに限らず後で色々トラブルあるから
299 名前:デフォルトの名無しさん mailto:sage [2019/06/28(金) 23:56:34.27 ID:b/1HFBuK.net] >>284 > 「この言語や環境はどこまで想定しているのかを調べる」 それはかなり大変なので、
300 名前:Q、3回やってもうまくいかなかったら別の言語に乗り換えるという便法が別の解決策 [] [ここ壊れてます]
301 名前:デフォルトの名無しさん mailto:sage [2019/06/29(土) 01:27:00.86 ID:LLveF6E3.net] だから何?
302 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 08:37:48.34 ID:yoyjVAJo.net] Win10 v1903 メモ帳で新規作成したテキストがtypeで化ける もはやSJISは既定値ではない cmdは旧態依然
303 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 17:34:32.60 ID:9mSpzETW.net] まあ chcpすりゃいいだけだし
304 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 18:30:22.69 ID:wRHHZz1p.net] 日本語レイアウトが崩れるからだめ
305 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 21:43:07.98 ID:y34WtIiv.net] 以前は実行中のバッチファイルを編集保存、行を追加したり減らしたり、すると エラーになってたと思うんだけど、何かエラーにならなくなった? Windows10 1903 からの変更? たまたまなのかな?
306 名前:デフォルトの名無しさん mailto:sage [2019/07/04(木) 21:57:41.98 ID:y34WtIiv.net] >>294 自己レスです すいません、気のせいでした、たまたま起きないように見えただけで 普通にエラーが起きました
307 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 00:07:51.66 ID:BL7Y7b8G.net] 実行中の行やその直後の行を追加したり削ったりすれば、 同じ処理が繰り返しになったり、必要な処理がスキップされる形になって 挙動がおかしくなるな
308 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 20:30:36.68 ID:Osj0+Img.net] バッチファイルスクリプトって働き方改革になるの?
309 名前:デフォルトの名無しさん mailto:sage [2019/07/05(金) 21:19:11.24 ID:zBRgAgd8.net] Powershellが10年経って育った今からバッチを学ぶ意義は薄い
310 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 08:00:17.95 ID:NPkITZNc.net] >>296 全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね
311 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 08:01:28.83 ID:NPkITZNc.net] >>298 PowerShellは色々トリッキーなところあるからなぁ もう少し普通のスクリプト言語で良かったのに…
312 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:23:31.70 ID:OJAqpfME.net] >>299 インタープリターではなくなる
313 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:31:09.33 ID:SnF6bIfm.net] 働き方改革?
314 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:53:24.31 ID:NPkITZNc.net] >>301 意味わからん…
315 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 10:59:51.87 ID:OJAqpfME.net] >>303 そもインタープリターは行単位でのみ読み込み解釈実行する仕様。 行内容を変えても反映されないんじゃインタープリターにならない
316 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:04:50.99 ID:NPkITZNc.net] >>304 > そもインタープリターは行単位でのみ読み込み解釈実行する仕様。 逐次解釈は別にメモリーからでもいいだろ > 行内容を変えても反映されないんじゃインタープリターにならない そもそも行内容変えたらおかしくなるって話なんだがw
317 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:12:26.69 ID:OJAqpfME.net] >>305 1の行の処理が終わってから2の行を読み込み解釈するのがインタープリター メモリ先に読み込んだんじゃ意味ないの。 行内容変えてバグ混入させてバグったなら仕様通り
318 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:45:00.41 ID:ddaI9LPq.net] ディスクキャッシュなしだとクッソ遅いんだよな
319 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 11:54:17.26 ID:NPkITZNc.net] >>306 読み込み元がファイルかメモリーかなんて関係ないだろ 昔のBASICはインタープリターじゃねーのかよw > 行内容変えてバグ混入させてバグったなら仕様通り バカすぎる…
320 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:11:18.65 ID:OJAqpfME.net] 本来の仕様・特性を理解しておらず。 メモリに全部読み込んでファイルロックかけちゃえばとか どっちがアホなんだか >>296 のようなことをしなければいいだけ
321 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:13:38.81 ID:NPkITZNc.net] > メモリに全部読み込んでファイルロックかけちゃえばとか 日本語の理解力もないのかよ…
322 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:20:37.36 ID:OJAqpfME.net] 仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ、自分で制作しておやりなさい」としか ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
323 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:45:33.27 ID:SnF6bIfm.net] 横から失礼します。 例えば、バッチじゃないけど、 中間コード生成するのは、 インタプリタじゃないの?
324 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 12:53:22.08 ID:NPkITZNc.net] > ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ? うんうん、 > 行内容を変えても反映されないんじゃインタープリターにならない とか言ってたバカに言ってやれよww
325 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 13:25:39.62 ID:OJAqpfME.net] >>313 絶望的に頭悪いな 行内容を変えても反映されないんじゃインタープリターにならない 未実行の行内容をにバグ混入させればバグるのは仕様通り。インタープリタだから。 >>299 だと行内容変えても帰る前の動作を続けるかファイルが変えられなくなる。
326 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 13:31:06.82 ID:NPkITZNc.net] > 実行中にプログラムファイル弄る方がバカでしょ? なのに内容変えたら反映しろとか頭おかしいw もう自分が何を指摘されてるかもわかってないんだろうな
327 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:13:50.98 ID:OJAqpfME.net] 動作がバグらないように行内容をいじる方法もあるからなー バカには気づけないのかもな
328 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:26:59.31 ID:NPkITZNc.net] しれっと話し変えててウケる~w
329 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 14:27:43.94 ID:ZOT0kh7c.net] title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう timeout 5 powershell sleep 5 Powershellを呼び出してもタイトルが変化しない方法ありませんか?
330 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 15:18:42.27 ID:Mj6xLmMK.net] なんか色々とっちらかってるけど 入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ まとめて実行する方法がバッチ バッチを書くための言語の種類がスクリプト なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない あまり言われることはないけどC言語なんかも手順をまとめて記述するという 意味ではバッチ そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに 変換するのがコンパイラ なので>>312 が言うような中間コードを生成するのは処理的にはバッチのコンパイル C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで 中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど、これらの エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する ことも出来るようになっている インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので、 バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど、バッチ スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき、 文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで 実行できるバッチスクリプトって言うものも存在する 逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて コードを読み込んで実行するので、実行中にファイルを書き換えても読み込まれた コードが変わるわけではないのでそのまま実行できる
331 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 15:32:56.64 ID:Es9FYwgG.net] バカの長文ウザい
332 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 16:47:17.04 ID:edODQM35.net] 理解できないときの一行レス乙
333 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 17:04:06.81 ID:l+THgL+v.net] >>321 多分、その通り。 >>320 は、自分以外みんなバカというセンスのかたなのでしょう。 (320著『自分以外みんなバカ』)
334 名前:312 mailto:sage [2019/07/06(土) 17:45:47.25 ID:SnF6bIfm.net] >>319 レスありがとうございました。
335 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 18:13:58.11 ID:yCp3HJnn.net] >>321-322 そりゃ、 > あまり言われることはないけどC言語なんかも手順をまとめて記述するという意味ではバッチ みたいなアホなことを言う奴を理解しろと言われてもなぁw
336 名前:デフォルトの名無しさん mailto:sage [2019/07/06(土) 18:30:06.42 ID:edODQM35.net] アホとバカは意味がちゃうで
337 名前:デフォルトの名無しさん mailto:sage [2019/07/07(日) 00:42:47.20 ID:YVv/+K6C.net] 貴重なメモリをバッチなんかに使われたくない ましてやファイルハンド
338 名前: or FCBを消費するなんて考えたくもない [] [ここ壊れてます]
339 名前:デフォルトの名無しさん mailto:sage [2019/07/07(日) 17:57:51.72 ID:sK6+FwWI.net] 書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる これもインタープリタゆえのメリット
340 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:50:53.76 ID:2IS3Ei7C.net] 指定したURLをIEで開くバッチファイルを作りたいのですが、以下のいずれの書き方でもうまく起動しませんでした。 どのように記述すれば良いのでしょうか? start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/" start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/" start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/ cmd /c start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/" cmd /c start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/" cmd /c start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
341 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:52:08.85 ID:2IS3Ei7C.net] ↑書き忘れましたが、IEを起動したらバッチファイル自体はすぐに終了して欲しいです。
342 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 22:58:10.74 ID:t7LU6uHU.net] これで普通に開けたけど start "" "C:\Program Files\internet explorer\iexplore.exe" "https://www.yahoo.co.jp/" exit
343 名前:デフォルトの名無しさん mailto:sage [2019/07/17(水) 23:41:41.05 ID:2IS3Ei7C.net] >>330 助かりました。ありがとうございます><
344 名前:デフォルトの名無しさん mailto:sage [2019/07/22(月) 20:50:29.11 ID:64jFVFKi.net] 質問です chcp を設定後に日本語テキストファイルを type しても なぜか数行ごとに部分的に文字化けします 正しく表示させる方法はありますか ファイルをコード変換するしかないでしょうか 20932 (EUC-JP) 50220 (JIS) 65000 (UTF-7) 65001 (UTF-8)
345 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 00:29:27.63 ID:NmYCCAI2.net] 正常に表示できる部分もあるのか? コマンドプロンプトのフォント設定はレジストリをいじればできるようだが chcp したとしても 各コードに合わせた日本語フォントがないと思う ファイルをコード変換には nkf などを利用すればよい もちろんcp932に変換できない文字がありえる点には注意
346 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 01:19:58.32 ID:dqAnc0cb.net] 横から失礼。多分フォントの問題じゃないなあ。再現してみる。 @echo off del a.txt set "a=ああああああああああああああああああああああああああああああああああ" chcp 65001 for /l %%i in (1,1,10) do echo %a% >> a.txt start notepad a.txt type a.txt pause goto :eof
347 名前:デフォルトの名無しさん mailto:sage [2019/07/23(火) 13:00:19.24 ID:dqAnc0cb.net] >>332 typeの代替えバッチ @echo off & set /a b=1 for /f "delims=:" %%i in ('type "%~1" ^| findstr /n /r /c:"^$"') do call :x %%i set /a a%b%=0,b=1,c=1 for /f delims^=^ eol^= %%i in ('type "%~1"') do call :y & echo.%%i goto :eof :x set /a a%b%=%1,b-=-1 & exit /b :y set /a d=a%b% set /a c-=-1 & if %c%==%d% echo.& set /a b-=-1 & goto y 動作文字コードは>>332 の4種類とcp932とBOM付UTF-16LE 内部コマンドのtypeの文字化けの原因は不明 得体の知れないバッチが嫌ならnkfでどうぞ
348 名前:332 mailto:sage [2019/07/23(火) 19:39:52.27 ID:3qcsVE62.net] みなさんレスありがとうございました >>335 のバッチを実行したら正しく表示されました なにか不具合があれば nkf で変換します
349 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 14:25:26.72 ID:KhkfuoHG.net] @ECHO OFF FOR /L %%I IN (1,1,3) DO ( :ラベルの次に空行だと死ぬようだ ECHO %%I ) PAUSE
350 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 23:40:50.69 ID:uv4O1i4q.net] >>337 FOR コマンドの中に単純にラベルを入れるとそうなる。 諦めろ。そういう腐った仕様だ。
351 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 07:12:05.83 ID:e+IGCa9q.net] MSはpowershell作っといてcmdも生殺しのまま
352 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 07:24:42.21 ID:i8+nUA9v.net] 後方互換レガシー用だから
353 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 16:26:14.51 ID:O+qo9jJ2.net] ・ループはなるべくラベルgotoで作る ・処理はまとめてCALLで呼び出す と変な仕様に悩まされなくて済む
354 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 01:15:40.10 ID:qDWW1IB8.net] >>341 つーか >>337 は FOR コマンドの中に「REM コマンドの代わりとして」ラベルを入れたっぽいよね。 REM コマンドは確かにダサい。クソみたいにダサい。 が、完全な代替手段はないことが今日までの先人たちの研究で分かっている。 「○○な場合正しく動かない」というケースから逃れられない。 素直に REM しとけ、って話なのさ。
355 名前:デフォルトの名無しさん mailto:sage [2019/08/12(月) 01:43:33.99 ID:asx4qCxc.net] >>341 そうですね バッチ作成30年の知恵 バッチ前言語というのをつくり、バッチに変換するツールがあるといいのに
356 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 08:17:57.87 ID:2+7gdzMY.net] なぜエラー? @echo off for /l %%i in (1,1,3) do (^ echo %%i ) pause
357 名前:デフォルトの名無しさん mailto:sage [2019/08/14(水) 12:07:08.56 ID:tEu06J9P.net] 空白行があるのがまずいのです。
358 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 07:26:44.38 ID:mKbuBo/x.net] echo onで見るとechoが消えてる for /L %i in (1 1 3) do (%i)
359 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 07:36:02.85 ID:mKbuBo/x.net] 今、気付いたけど for/Lのカウントの区切り文字は半角スペースでもいいんだな
360 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 12:44:36.23 ID:ALsBqyPd.net] なんで"("のあとでエスケープしてるんだ?
361 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:55:50.85 ID:8DKeAJZl.net] >>348 エスケープすると長い記述を改行分割できる。 下記なら動くのではと想像 @echo off for /l %%i in (1,1,3) do (^ ^ echo %%i ) pause
362 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 18:58:32.85 ID:8DKeAJZl.net] こうかも。 違いはechoの前の半角スペースの有無 @echo off for /l %%i in (1,1,3) do (^ ^ echo %%i ) pause
363 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:14:09.75 ID:bAdklReO.net] >>350 横からだが、だとしても ”(” の直後には不要でしょう わざわざ地雷踏みにいってるとしか思えない
364 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 20:20:13.66 ID:hL4sD0l+.net] >>349 そういうことじゃなく、 そんなところにエスケープさえしなければ動く、ということ 空改行があっても同じ @echo off for /l %%i in (1,1,3) do ( echo %%i ) pause そもそも、エスケープが必要なのは以下のような書き方の場合 @echo off for /l %%i in (1,1,3) ^ do ( echo %%i ) pause
365 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 13:12:21.88 ID:nbkgz595.net] 元々^が要らんのは分かるが 何で2行下のechoが消えるんだ?
366 名前:デフォルトの名無しさん mailto:sage [2019/08/16(金) 19:53:07.91 ID:tgbth6lv.net] 何が正解か良く分からないけど「echo」が消えているのではなく 「echo %%i」が実行された結果「%i」って文字列が出力されて いるんじゃないかな
367 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 03:04:11.02 ID:loMKkBUO.net] うん、メッセージを出したかったら、 echo [メッセ−ジ文] だよね。
368 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 07:25:02.72 ID:u1p0gnkJ.net] >>346 を見ろ
369 名前:332 mailto:sage [2019/08/17(土) 18:15:26.70 ID:etNorZr1.net] はろー♪ @echo off (^ rem echo Hello, World!) pause
370 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 21:41:43.17 ID:nWccZbx0.net] >>357 cmd のパーサーが馬鹿なだけ。 そういうトリッキーな小賢しい書き方を探しても誰も幸せになれない。
371 名前:デフォルトの名無しさん mailto:sage [2019/08/17(土) 23:29:25.24 ID:u1p0gnkJ.net] >>357 そういうのはもういいから
372 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 20:01:18.85 ID:S2+8M2EA.net] C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache にIEのキャッシュファイルがあって、コマンドで削除したいのですが del /f /q C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache\* を管理者権限のコマンドプロンプトで実行しても消えてくれません。 どうすれば消せるのでしょうか? 環境はWin10です。 ちなみに上記の「del /f /q」を「dir」に変えて実行すると、何もファイルが表示されませんでした。
373 名前:エクスプローラでは表示されるのに… [] [ここ壊れてます]
374 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 20:06:19.31 ID:WpfDQiIq.net] まずは対象ファイルの属性を確認かな
375 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 20:39:45.13 ID:WpfDQiIq.net] ここに詳しく書いてある https://freesoft.tvbok.com/web/ie/ie11ie10webcache.html
376 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 17:07:15.01 ID:C82bQLaF.net] 任意のテキストファイルの各行(1〜N)を、 変数のARRAY[1〜N]にそのまま代入できますか? テキストは空行あり、文字化けは無しで。
377 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 18:13:13.64 ID:C82bQLaF.net] すみません N行は指定じゃなくて全行です
378 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 19:43:28.54 ID:hATE1ff9.net] >>363 確認の表示が不要なら消してくれ @echo off & set /A N=0 & if "%~1"==":GETS" goto GETS for /F "delims=" %%I in ('call "%~0" ":GETS" "%~1"') do ( set /A N+=1 & set %%I) setlocal enabledelayedexpansion for /L %%I in (1,1,%N%) do echo ARRAY[%%I]=!ARRAY[%%I]! goto :eof :GETS set o="tokens=* delims=0123456789" for /F %o% %%I in ('findstr /N "^" "%~2"') do ( set /A N+=1 & set s=%%I setlocal enabledelayedexpansion echo ARRAY[!N!]=!s:~1! endlocal)
379 名前:デフォルトの名無しさん mailto:sage [2019/08/30(金) 20:46:06.08 ID:C82bQLaF.net] >>365 ありがとうございました シフトJISで動作しました
380 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 00:24:30.62 ID:dLbvCDhA.net] 発見 call は遅い 自バッチ内であっても繰り返しの中では使わないほうがよい
381 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 02:06:06.88 ID:KhyCGx+x.net] それは分かる 何かいい方法が有ったら書いてくれ
382 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 07:34:22.10 ID:KhyCGx+x.net] ループの中では、call setも遅いな call先はバッチが基本なので %path%のフォルダ内にset.batが存在しないか ループの中で毎回、無駄に検索して時間のロスに
383 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 13:05:56.96 ID:4qIvp+ND.net] フルパスか相対パスで書けばいいのに
384 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 15:06:36.69 ID:ny+pXiR9.net] クリーンに再実装しようとしてもうまく行かないし、Windows Terminalのオプソ化に期待
385 名前:デフォルトの名無しさん mailto:sage [2019/08/31(土) 21:47:05.78 ID:KhyCGx+x.net] 内部コマンドsetにフルパス?
386 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 21:00:42.57 ID:Syn6UaDZ.net] ポータブルデバイスにフォルダ移動したいのですがどのコマンドを使えばよろしいのでしょうか? 宜しくお願いします。
387 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 07:27:23.31 ID:zCU+H1xg.net] robocopy
388 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 22:10:15.94 ID:zS9nLp3S.net] >>374 回答ありがとございます。 試してみましたがうまくいきませんでした。
389 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 17:48:14.75 ID:W0BHkkEI.net] そのポータブルデバイスとやらのスレで聞け
390 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 19:33:15.60 ID:UaiZGsoz.net] >>373 MTP接続しているデバイスにbatでフォルダ移動したいということ?
391 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 21:49:07.77 ID:oZTJ7ty8.net] >>377 MTP接続しているデバイスの端末(スマホ)のフォルダをCドライブにコピーしたいのです。 何度もありがとございます。
392 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 18:54:32.90 ID:YblgUZDU.net] >>378 MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という 仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと 無理みたいだけど
393 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 20:53:45.43 ID:C2+cwByF.net] >>379 なるほどコマンドだけでは出来ないのですね。ありがとうございました。
394 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 21:22:16.17 ID:CafmkPOq.net] mtpじゃなくftp使えばいいんじゃない
395 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 23:15:32.97 ID:Va/jwPX
] [ここ壊れてます]
396 名前:C.net mailto: スレチだけど、横から失礼。 今USBで繋いだスマホのファイルをPCのexplorerで見てたら、 どうしても表示されないファイルが一部あるんだよ。 表示を更新してもダメだ。何なんだろ、これ。 スマホ側でzipに圧縮したら転送できたんだが。 [] [ここ壊れてます]
397 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 09:52:34.32 ID:obXFPJy6.net] >>382 MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示 できないってのは覚えがないのでスマホ側の実装の問題じゃないかな
398 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 11:24:33.96 ID:aqL81KxG.net] >>383 スマホのandroidがおかしいのかも explorerでコピペしたら 全数処理できてるか要確認ですね
399 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 12:19:59.86 ID:Zmbs8cMB.net] >>382 メディアストレージのDBが壊れてるか更新されてないだけでは?
400 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 12:39:19.92 ID:aqL81KxG.net] >>385 zip圧縮後、繋ぎ直したらzipは表示されたが元ファイルは非表示、 なので更新というより壊れてたみたいね
401 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 23:40:04.00 ID:bVn3Z6J/.net] >>378 Android Debug Bridge(adb)を使用してはどうでしょうか? https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles 例)adb pull remote local ただしワイルドカードが使用できないので工夫が必要かも
402 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 06:16:16.89 ID:9I7oEjtC.net] そもそもAndroidなのか?
403 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 04:39:39.37 ID:LINEF6Ks.net] >>387 adbを使用したらうまくいきました。 ありがとうございました。
404 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 22:20:01.40 ID:vtcCH4Ws.net] vbsスクリプト使用者に対話型でURLを入力させようと思い inputboxを使用していましたが254文字以降は切り捨てられるようで 切り捨てられた場合にcmdを呼んでコマンドプロンプトで TYPE CONで入力させ標準出力からとろうと思いました。 コマンドプロンプトから TYPE CON で文字入力していくと510文字しか打てません COPY CON で文字入力していく場合も510文字しか打てません ただこちらは改行して2回目以降の文字入力は254文字までしか打てません コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど TYPE COPYコマンドが原因なのでしょうか? 上限が512-2 256-2なのが気になります
405 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 22:57:55.77 ID:co/wCjS7.net] >>390 set /p var で入力すると1023文字入力できるみたい
406 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:08:42.31 ID:vtcCH4Ws.net] >>391 ありがとうございます 環境変数に突っ込んでそっちからとる案ってことですね
407 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:19:31.66 ID:co/wCjS7.net] 標準出力がいいなら echo %var% を最後に付けとけばうまくいかないかな?
408 名前:デフォルトの名無しさん mailto:sage [2019/10/01(火) 23:41:17.62 ID:vtcCH4Ws.net] いえVBSで環境変数からでも取れるんでどちらでもいいんですが この方法は毎回ファイル書き込みはいるのなら避けたいですね
409 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 06:03:26.81 ID:qiM7wE73.net] >>390 findstr ^^ ではどうですか? 入力の最後は改行とCtrl+Z 8000文字は入ったが、それ以上は試していない
410 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 19:45:19.23 ID:+nOn2TPH.net] >>395 ありがとうございます。たしかにfindstr ^^ 試すと長く入力できますね ただスクリプトが動く動きません(type con copy con以外) たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします //Prompt.vbs
411 名前: Function Prompt(Text,Default) WScript.Echo(Text) Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con") 'Set oExec = WshShell.exec("cmd /c findstr ^^") Prompt = oExec.stdout.ReadLine() oExec.terminate End Function msgbox Prompt("test dayo","") [] [ここ壊れてます]
412 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 20:43:23.90 ID:jymbX9V4.net] cmdじゃないけど powershell -Command $a=read-host; write-host $a とかどうよ
413 名前:デフォルトの名無しさん mailto:sage [2019/10/03(木) 21:20:07.70 ID:+nOn2TPH.net] powershellもちょっと試してたんですけどこっちもキーボード入力がはいってるように見えないです powershellはcommand移行の注釈がいまいちわからなくてそれが原因なのかなとも思ったんですけど (""の場合は前に&をつけるとかどうとか) Function Prompt(Text,Default) WScript.Echo(Text) Set WshShell = CreateObject("WScript.Shell") 'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con") 'Set oExec = WshShell.exec("cmd /c findstr ^^") Set oExec = WshShell.exec("powershell -NoExit -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command $a=read-host; write-host $a") Prompt = oExec.stdout.ReadLine() oExec.terminate End Function msgbox Prompt("test dayo","")
414 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 05:33:06.84 ID:igWxDR2f.net] >>398 いまいちVB.NETがどういう環境で使えるのか分からないし PowerShellの実行を許可してない環境でも動くのかも分からないが VB.NETのinputboxには256文字の入力制限が無い模様 Function Prompt(Text,Default) WScript.Echo(Text) Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.exec("powershell -NoProfile -ExecutionPolicy Unrestricted -C add-type -AssemblyName microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('URLを入力してください', 'URL入力');") Prompt = oExec.stdout.ReadLine() End Function 'msgbox Prompt("test dayo","") WScript.Echo Prompt("test dayo","")
415 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 06:57:13.54 ID:2Xve1BBy.net] >>396 良く分からんが、こんなのでどうですかね? -------foo.bat @findstr ^^ < con -------Prompt.vbs Function Prompt(Text,Default) WScript.Echo(Text) Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.exec("foo.bat") Prompt = oExec.stdout.ReadLine() oExec.terminate End Function msgbox Prompt("test dayo","")
416 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 08:44:14.07 ID:2Xve1BBy.net] バッチ不要だな Set oExec = WshShell.exec("cmd /c findstr /R . < con") 最後に1023文字しか表示されないなReadLineのせいか?
417 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 12:18:00.19 ID:mgLzdBVB.net] ありがとうございます Function Prompt(Text,Default) WScript.Echo(Text) Set WshShell = CreateObject("WScript.Shell") 'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con") Set oExec = WshShell.exec("cmd /c cmd /c findstr /R . < con") Prompt = oExec.stdout.ReadLine() oExec.terminate End Function msgbox LEN(Prompt("test dayo","")) でやると8190でるのでmsgboxの表示制限っぽいです 上限が512から8190まで増えました♪
418 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 12:44:51.20 ID:2Xve1BBy.net] それは良かった ところで cmd /c cmd /c と2重になってるのは何か意味が?
419 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 12:49:02.43 ID:mgLzdBVB.net] 単なるミスですw
420 名前:デフォルトの名無しさん mailto:sage [2019/10/04(金) 20:33:36.96 ID:igWxDR2f.net] >>402 HTAで作るって方向は無いのかな? WScriptオブジェクトは使えないけど、IEと違ってローカル処理はできるよ 全部HTAにするのが面倒ならUI部分をHTAで作って そこから、各々vbsを起動するようにするとか サンプル www.42ch.net/UploaderSmall/source/1570156236.zip
421 名前:デフォルトの名無しさん mailto:sage [2019/10/05(土) 07:49:09.72 ID:XliNsfqD.net] ありがとうございます HTAも便利そうですね アドレスバー,リンクをドラッグドロップで取り込めるのがいいなと
422 名前:デフォルトの名無しさん mailto:sage [2019/10/07(月) 16:39:36.79 ID:/M5l0Sli.net] そういやHTAはHighDPI対応してないのかな サーフェスで苦労した覚えが
423 名前:デフォルトの名無しさん mailto:sage [2019/10/09(水) 19:08:15.06 ID:tUBbtl1D.net] 文字列の画面表示の桁数はバッチで取得できますか? 半角1で全角2での合計みたいな
424 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 19:46:16.73 ID:NVkes/cJ.net] >>408 @echo off & if "%~1"=="1" goto x set c=call "%~0" 1 ^^^| findstr /o /r .* set o="skip=1 delims=:" & set /p s=文字列= for /f %o% %%i in ('%c%') do set /a b=%%i-2 echo 桁数=
425 名前: %b% & pause & goto :eof :x setlocal enabledelayedexpansion echo.!s! echo. 入力はシフトJISで表示できる文字のみです。 CP932で正常に動作します。たぶん。 [] [ここ壊れてます]
426 名前:デフォルトの名無しさん mailto:sage [2019/10/10(木) 23:42:47.50 ID:T8I5o9Ey.net] mode con かも
427 名前:デフォルトの名無しさん mailto:sage [2019/10/11(金) 07:29:52.81 ID:D9aa0x5a.net] >>409 ,>>410 ありがとうございました! コードページは932でしたので問題ないです これで複数のデータを右詰めで揃えて表示できました タブ入りだと表示がズレますが自分で対処します
428 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 19:14:42.75 ID:MUFbi2Ng.net] 特定の2つのフォルダ内を一括削除するbatの作り方がわかりません…。 1つだけならば出来るのですが2つ指定するにはどうすればいいのでしょうか お願いします
429 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 19:26:30.68 ID:sHZx2IDB.net] 1行目にAフォルダを削除 次の行にBフォルダを削除でいいんじゃないの? 1行に書きたければ 複数のコマンドを続けて実行する https://www.adminweb.jp/command/action/index1.html
430 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 19:28:12.11 ID:DNcfAKqA.net] 2回やるbatを作ればいいのでは?
431 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 19:29:32.93 ID:DNcfAKqA.net] あ、かぶってしまった
432 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 22:56:14.67 ID:ZkRket+3.net] for %%I in ( C:\AAA C:\BBB ) do del /Q %%I\*.*
433 名前:デフォルトの名無しさん mailto:sage [2019/10/18(金) 23:57:13.31 ID:uNKAmOCu.net] for /f %%i in ('dir /b^|find "foo"') do pause fooが無かった場合pauseしてくれないのですが解決策ありませんか? 実際はfooの有無で分岐させるのですがとりあえずpauseで書いてます
434 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:21:50.04 ID:nJ40H8MU.net] >>417 (for /f %%i in ('dir /b^|find "foo"') do pause) || pause
435 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:29:35.02 ID:lUUAms6Y.net] >>418 ありがとう、できたらfor内で分岐したい…
436 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:34:28.69 ID:nJ40H8MU.net] forのループは条件が一致しないとすり抜けて 1回も通らないで次のステートメントにいっちゃうから無理 無理矢理やろうとすると、ダミー項目を与えて必ず一度はforループを実行するようにして その中でダミー項目だったら〜と条件判定することになる
437 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:43:02.67 ID:nJ40H8MU.net] こんな感じ for /f %%i in ('dir /b^|find "foo"^|^|echo none') do (if "%%i" equ "none" echo ありません)
438 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 00:49:42.45 ID:nJ40H8MU.net] 俺としては>>418 の方が見やすくて間違いが少なくて済むと思う
439 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 01:05:43.14 ID:lUUAms6Y.net] なるほど||つかう手もあるんですね for入れ子にしてるから||でいきますありがとう
440 名前:デフォルトの名無しさん mailto:sage [2019/10/19(土) 01:26:01.92 ID:nJ40H8MU.net] forの後で、%errorlevel%で判断できるかと思ったけど forのコマンドは子タスクで実行されるから環境を親タスクに引き継がないんだね こういうことはパイプの右側でも起きるけど
441 名前: mailto:sage [2019/10/19(Sat) 07:15:14 ID:azMLqhGk.net] for /f "delims=" %%i in ('dir/b *foo* 2^>nul ^|^| echo *') do ( if "%%~i"=="*" (echo ないよ) else echo %%i )
442 名前:デフォルトの名無しさん mailto:sage [2019/10/20(日) 07:21:20.34 ID:bUbbfXYV.net] for /f "delims=" %%i in ('"dir/b *foo* 2>&1"') do if not exist %%i echo %%i
443 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 18:09:26.80 ID:8RixcIVS.net] なんか古代呪文を撃ちあってるみたい(^_^;)
444 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 21:05:31.60 ID:Sv6Oxatw.net] そう、実は、古代語魔術(ハイエンシェント)を打ち合っているのです。 スレ違いだけれど、 魔法の使い方 https://eman-physics.net/columns/magic.html を、思い出した。
445 名前:デフォルトの名無しさん mailto:sage [2019/10/21(月) 22:05:11 ID:nEQALG6h.net] ザイログニーモニックは忘れた
446 名前:デフォルトの名無しさん mailto:sage [2019/10/22(火) 23:09:34.31 ID:jiuE9ZBi.net] 詠唱せよ
447 名前:デフォルトの名無しさん [2019/10/27(日) 14:29:49.16 ID:Lik42TLZ.net] cmd.exe /c start ってネットワークドライブのファイル開けないんでしたっけ? cmd.exe /c start t:\test.txt ってやると アクセスが拒否されました。って表示される。c:\以下なら大丈夫 cmd.exe /c start file:\\t:\test.txt ってやれば開けるからいいんだけど
448 名前:デフォルトの名無しさん mailto:sage [2019/10/27(日) 19:40:17.02 ID:n+Gkmfbl.net] cmd /c start t:\test.txt と start t:\test.txt の違いは?
449 名前:デフォルトの名無しさん [2019/10/27(日) 19:45:47.81 ID:QHyOIS3t.net] startが内部コマンド
450 名前:デフォルトの名無しさん mailto:sage [2019/10/27(日) 19:54:44.57 ID:n+Gkmfbl.net] なんで cmd /c が必要?
451 名前:デフォルトの名無しさん [2019/10/27(日) 22:46:50.23 ID:8uvk7ayg.net] >>434 ぐぐれかす
452 名前:蟻人間 mailto:sage [2019/10/27(日) 23:17:38.75 ID:cNZwDfUU.net] >>434 内部コマンドは実行可能なモジュールではなく、cmd内部でのみ実行可能だから。 内部コマンドはcmdで解釈・実行される。
453 名前:デフォルトの名無しさん mailto:sage [2019/10/28(月) 01:22:07 ID:YqbFbBrf.net] >>434 バッチでは cmd /c は不要ですね。 cmd /c があれば子プロセスになります。 どっちも結果は同じ。エディタが起動します。 「ファイル名を指定して実行」の入力なら、 cmd /c start は不要かと思います。 でも、あっても間違いではないです。
454 名前:デフォルトの名無しさん mailto:sage [2019/10/28(月) 02:10:13 ID:t0sY5Haq.net] そんなこと聞いてないから、>>431 に答えてくれ
455 名前:438 mailto:sage [2019/10/28(月) 02:18:17.09 ID:bqlyCkZ6.net] ネットワークフォルダをドライブに割り当てた問題かと思えば 関係なさそうだ。でも不思議だ cmd.exe /c start \\server\folder だとフォルダが開ける cmd.exe /c start \\server\folder\subfolder でも問題ない cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける
456 名前:デフォルトの名無しさん mailto:sage [2019/10/28(月) 03:05:07.76 ID:ML+fUsJB.net] 管理者権限でやってみては?
457 名前:438 mailto:sage [2019/10/28(月) 03:54:57.58 ID:bqlyCkZ6.net] アクセスが拒否されました
458 名前:デフォルトの名無しさん mailto:sage [2019/10/28(月) 07:04:53 ID:YqbFbBrf.net] >>438 すみません。私には分かりません。 cmd/c を省略、 さらに start を省略しても同じアクセス拒否ですか?
459 名前:デフォルトの名無しさん mailto:sage [2019/10/28(月) 08:16:04.60 ID:kjzN6NI8.net] >>439 >cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される >でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける このコマンドには、メモ帳を起動すると書いていないから、起動できないだろ 拡張子から、起動するアプリを取得できないだろ? そういう情報は、レジストリに入っているから、 バッチファイルから、そこへアクセスできるか?
460 名前:443 mailto:sage [2019/10/28(月) 08:20:10.88 ID:kjzN6NI8.net] 普通に「notepad パス付きファイル名」なら、起動できるだろ?
461 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 07:53:25 ID:SHkVBveq.net] >>439 エクスプローラーのバーに書くのも cmd/c start は要らんぞ
462 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 11:55:42.58 ID:w4Uxvw1j.net] >>443 バッチからでも関連付け起動できるぞ
463 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 12:51:26.56 ID:SHkVBveq.net] file:\\C:\Program Files (x86)\TeraPad\TeraPad.exe >>446 >>443 は.txtの関連付けはメモ帳とは限らんと言ってる notepad.exe がネットワークドライブのファイル名を処理できるかは知らんが notepad file:\\t:\test.txt みたいなのではダメだろうな start file:\\t:\test.txt なら良さそうだが
464 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 12:53:59.00 ID:SHkVBveq.net] ああ1行目にゴミが付いたw 無視してくれ
465 名前:デフォルトの名無しさん [2019/10/29(火) 13:09:40.06 ID:YQKoC2Uo.net] コマンドプロンプトの文字コードがよくわからん。 なんでchcp 932なのにUnicodeが表示できてるんだ? chcpの設定とは無関係に画面はUnicodeで変換してるんか?
466 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 13:26:49.20 ID:SHkVBveq.net] バッチはSJIS リダイレクトするとSJIS 画面はユニコード set はユニコード特有文字でも入る(cmd画面で入力なら) cmdの内部処理はユニコード
467 名前:デフォルトの名無しさん [2019/10/29(火) 13:34:20.85 ID:spBBwL/I.net] Unicodeはいいが文字コードは何なんだ? UTF-8なのか?UTF-16なのか?
468 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 13:37:09.01 ID:SHkVBveq.net] 16
469 名前:デフォルトの名無しさん [2019/10/29(火) 13:40:11.15 ID:spBBwL/I.net] >>452 と思うやろ? typeコマンドは文字コード変換してるかもしれんなと思って copy ファイル名 CON なら、そのまんま表示されるだろうと 思ってやってみたら、 UTF-8は問題なく表示されて、UTF-16は文字化けしてるんだよ。 Windows 10で仕様でも変わったんか?
470 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 13:47:51.80 ID:SHkVBveq.net] 変わらず 後は自分で調べろ
471 名前:デフォルトの名無しさん [2019/10/29(火) 13:53:47.92 ID:spBBwL/I.net] わからんのかーいw
472 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 14:01:37.87 ID:SHkVBveq.net] 図に乗るな
473 名前:デフォルトの名無しさん [2019/10/29(火) 14:15:50.84 ID:spBBwL/I.net] やっぱり仕様が変わってた。 Windows 7だとchcp 932の時、 copy test.txt CON で正しく表示できるのはShiftJISだけ UTF-8でもUTF-16LEでも文字化けする。 Windows 10だと逆に、UTF-8(BOMなし)、UTF-16LEは 正しく表示できるが、ShiftJISは文字化けする。
474 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 14:23:41.56 ID:SHkVBveq.net] そうなのか でも内部が16だと思うが 分からん
475 名前:デフォルトの名無しさん [2019/10/29(火) 14:27:54.02 ID:spBBwL/I.net] Windows 7でもdirコマンドでShiftJISにない文字は表示できてるから 最終的にはUnicodeなんだろう(おそらくUTF16だと思うが) その途中になんかあるんだろうな。 Windows 10でcopy CONつかってるのに、UTF-8とUTF-16の両方が 文字化けしないのが不思議だ・・・って思ったら、 あれ?UTF-16文字化けしてた。んん?間違ってtypeで表示してたか。 これなら理解できる。
476 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 14:44:03.37 ID:XkpxJQc3.net] >>457 いつのWindows10だね?
477 名前:デフォルトの名無しさん [2019/10/29(火) 14:52:33.20 ID:spBBwL/I.net] >>460 今の最新の公式リリース
478 名前:デフォルトの名無しさん [2019/10/29(火) 14:56:43.68 ID:spBBwL/I.net] なんかわかりづらくなったので再掲 copy test.txt CONで検証 Windows7、chcp 932・・・text.txt が ShiftJIS だと正しく表示される Windows10、chcp 932・・・text.txt が UTF-8(BOMなし) だと正しく表示される
479 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 16:52:33.42 ID:spBBwL/I.net] なんかいろいろ勘違いしてたっぽい copy CONつかってもどこかの誰かが変換かましてるっぽい こんな漢字でバイナリ直接吐き出したら、chcp 932ではSJISしか正しく表示されなかった。 chcp 65001にしたらUTF8だけ Windows 10でだけど、たぶんWindows 7でも同じじゃないかな? #include <iostream> int main() { unsigned char str[] = { 0xE6, 0xBC, 0xA2, 0xE5, 0xAD, 0x97, 0xE2, 0x9D, 0xA4 }; std::cout.write((char*)&str, sizeof(str)); }
480 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 17:46:22.44 ID:4a4kNF+Q.net] 一つわかった気がする。 コマンドプロンプトはUnicode対応してるけどバッチファイルはUnicode対応じゃないんだ。 (正確にはchcp 65001を実行すれば、UTF-8のバッチファイルを実行できる) だからchcp 932のままコマンドプロンプトでUnicode文字を使うことができるけど バッチファイルにするとそれができない。
481 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 17:46:59.43 ID:wQOUEDyj.net] テキストストリームだけしか通さないから何らかの変換が入ってるのかも知れないね copy /b hoge.txt con 指定されたデバイスに書き込めません。 0 個のファイルをコピーしました。
482 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 18:03:33.66 ID:4a4kNF+Q.net] あ、copyに/bオプションなんてあったのか・・・
483 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 18:10:48.74 ID:4a4kNF+Q.net] そんな馬鹿な・・・。Windows 10でもShiftJISじゃないと表示されなくなっただと? 何度も確認したはずだぞ???
484 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 18:37:30.30 ID:tLCpEMn0.net] Windows10については徐々に更新されているらしい Windows Command-Line: Unicode and UTF-8 Output Text Buffer https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/
485 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 19:04:08.72 ID:SHkVBveq.net] 少し前にここ
486 名前:ナ同様の話題が有ったが UTF-8(BOM無し) のテキストは たとえ chcp 65001 しても type で一部分文字化けする findstr ^^ foo.txt で正常に表示されるはず(chcp 65001 で) [] [ここ壊れてます]
487 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 19:08:30.96 ID:SHkVBveq.net] あと chcp 65001 しても UTF-8 のバッチは 正常に動作しないと思った方がいい
488 名前:デフォルトの名無しさん [2019/10/29(火) 20:31:39.34 ID:ltL5L5Cn.net] あぁ、クソ。意味がわからんけど、理由がわかった。 1. まず、utf8.txt の中身をUTF-8で作る。ShiftJISにない文字も入れておく。 2. chcp を実行。「現在のコード ページ: 932」と表示されることを確認する。 3. コマンドプロンプトを起動して、type utf8.txt にして文字化けすることを確認する ここまではなんの変哲もない。 4. powershell.exe -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 を実行する 5. type utf8.txt を実行すると文字化けしない(!) 6. chcp を実行。「Active code page: 932」と表示される。932なのになぜか英語(!) chcpを変更してもとに戻すと、元に戻るし、 powershell -Command [Console]::OutputEncoding = [Text.Encoding]::Default を実行しても元に戻る 子プロセスであるはずのpowershellがなにかコマンドプロンプトの状態を変えてやがる。 なんだこれ?コマンドプロンプトに英語モードとかあったっけ?
489 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 20:34:10.83 ID:ltL5L5Cn.net] コマンドプロンプトを起動するのは2の時の間違いな
490 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 20:38:52.72 ID:ltL5L5Cn.net] この話から気づくと思うけど、 powershell -Command [Console]::OutputEncoding 初期状態は、日本語 (シフト JIS) powershell -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 これでUTF-8に変更して powershell -Command [Console]::OutputEncoding 現在の設定を確認すると、UTF-8になってる。 chcpの値は変わらんのに、コードページを変えることができてしまっているかのようだ。
491 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 21:33:51.82 ID:ltL5L5Cn.net] Windows 7にPowerShell6をインストールしてやってみたけど、 pwsh -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 で コードページが変わるな。Windows 7はまともに動かないので画面がバグるw
492 名前:デフォルトの名無しさん mailto:sage [2019/10/29(火) 21:41:58.40 ID:ltL5L5Cn.net] なるほど、SetConsoleOutputCPでコマンドプロンプトのコードページを変更できるらしい tooljp.com/language/C-Languate/sample-code/SetConsoleOutputCP-sample-code.html
493 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 07:47:21.02 ID:WNRoeYsC.net] おれもコードページ弄って色々やったが上手くいかなかった typeは一部ダメ、moreは全くダメ、findstrはリダイレクトするとダメ、 copy〜conは utf-7とjis が一部ダメ、 for〜do echoでやると空行が抜けてダメという具合
494 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 08:50:12.52 ID:BvOaIOcB.net] エディタがあれば必要ない
495 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 11:07:44.00 ID:iT3/p0k9.net] >>476 なんとなく画面に表示する部分にバグがあるから バッチファイル内で閉じて画面に表示しなければ、chcp 65001で動くような気がする。 あとWindows 10ではそこらへんが直ってるので同じように考えるのは早計
496 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 11:25:55.22 ID:iT3/p0k9.net] Windows 7でこれが文字化けせずに動いた chcpで画面はクリアされるが、正しく出力される。 ↓UTF8 + CRLFで作成 @echo off chcp 65001 set A=ユニコード文字 chcp 932 echo %A%
497 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:04:53.93 ID:BvOaIOcB.net] >>262 みたいのは今でも化けるね >>476 はWindows10だと思う どっちにしろ不具合を把握しとくのは大事だね
498 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:11:59.20 ID:n2bLSC2q.net] chcp 65001 にしてもcmd /u で開き直さなきゃバグるんじゃない?
499 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:17:27.39 ID:4eNYSN+t.net] chcpやってモード変更したとしても 既に開いたハンドルは開いたときのモードのままだろうからね
500 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:27:14.70 ID:iT3/p0k9.net] >>480 化けると言うよりか、文字の終わりを正しく認識できてない感じ これならうまくいく。 まずchcpをifの()内でやるとおかしくなる。 その上でsetする文字をダブルクォートでく
501 名前:くらなかったらおかしくなった なのでダブルクォートくくって、出力時に外してる。 @echo off chcp 65001 set A= set B= if "hoge"=="hoge" ( set A="あああ" set B="いいい" ) chcp 932 call :output %A% %B% exit /b :output echo %~1 echo %~2 [] [ここ壊れてます]
502 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:29:13.59 ID:iT3/p0k9.net] ちなみに >>483 はchcp65001した状態でバッチファイルを実行すれば バッチファイルの中でchcpせずに動く あとファイルの文字コードはUTF8な
503 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:32:44.17 ID:iT3/p0k9.net] >>482 そうとは限らない。 chcpはどうやら内部でSetConsoleOutputCPを呼び出してるんだろうけど SetConsoleOutputCPっていうのはConsole APIの一つで、 コマンドプロンプトのコードページを変更する。 このAPIは子プロセスから親プロセスをたどって見つけた コンソール(コマンドプロンプト)のコードページを変更できる。 ハンドルのモードは関係なく、コンソールのコードページの話
504 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:38:00.67 ID:iT3/p0k9.net] >>252 の改良でこれならうまく動くんだよな ダブルクォートはいるけど。 あとecho あああa みたいに最後をASCII文字にしても動く @echo off chcp 65001 if "hoge"=="hoge" ( echo "あああ" echo "いいい" )
505 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:45:45.44 ID:iT3/p0k9.net] こうすりゃいいのかw @echo off chcp 65001 if "hoge"=="hoge" ( call :echo "あああ" call :echo "いいい" ) exit /b :echo echo %~1
506 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 12:46:49.70 ID:iT3/p0k9.net] まあバッチファイルでchcp 65001を使うのはやめたほうがいいと思うけど ワークアラウンドでどうにか対応できなくはないかもしれないw
507 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 13:25:11.54 ID:iT3/p0k9.net] 上の方でcmdがだめならPowerShellを使えばいいじゃないみたいなことが書いてあるけど、 UTF8の出力に関しては、コンソールの問題だから Windows 7、8.1 ではPowerShellでもバグるんだよな Windows 7にPowerShell6を入れてみたが、デフォルトで 「あいう」というファイル名が「ああいいうう」と表示される上に [Console]::OutputEncoding = [Text.Encoding]::UTF8 すると 出力できませんみたいなエラーが発生するw つまりWindows 7+PowerShell6だと日本語ファイル名は正しく表示されない 標準搭載のPowerShell 2なら問題ないんだけどね
508 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 13:41:42.20 ID:zJjGNXoj.net] それは >これは、$OutputEncoding が Default だと US-ASCII になっているので、S-JIS 文字列を渡そうとしてもリダイレクト時に日本語がうまく扱えないからです。 >結論から言うと、$OutputEncoding を S-JIS に変更して clip.exe にリダイレクトすれば文字化けしません。 これが関係するのかな?
509 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 13:53:29.35 ID:ecgQNQwo.net] hoge ディレクトリに test_1.txt …半角スペースなし test 2.txt …半角スペースあり test 3.txt …全角スペースあり がある場合に @echo off for /f "usebackq" %%I in (`dir /b "hoge"`) do echo %%I というバッチファイルを実行すると test_1.txt test test 3.txt となって、普通に dir /b "hoge" を実行した結果と異なり、 半角スペースのある文字列(test 2.txt)を渡せないのだけれど、 どうしたらいいですか?
510 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 13:53:40.11 ID:iT3/p0k9.net] どこの記事だよw まあググったが。 https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
511 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:08:53.46 ID:iT3/p0k9.net] clipは使ったのことがないので実験。 あとPowerShellのバージョンで色々変わるので、 その記事の内容から検証しないといかんw ■コマンドプロンプトより ・chcp 932の場合 OK: echo あいう | clip.exe NG: echo (ユニコード文字) | clip.exe ・chcp 65001の場合 OK: echo あいう | clip.exe OK: echo (ユニコード文字) | clip.exe ■Windows 10 の PowerShell 5.1より ・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 932) NG: echo あいう | clip.exe NG: echo (ユニコード文字) | clip.exe ・[Console]::OutputEncoding = [Text.Encoding]::UTF8 NG: echo あいう | clip.exe NG: echo (ユニコード文字) | clip.exe ■PowerShell 6.2より ・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 65001) NG: echo あいう | clip.exe NG: echo (ユニコード文字) | clip.exe ただし、コマンドプロンプトおよびPowerShell 5.1では ?になるのにたいしてこっちは文字化けする
512 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:13:56.47 ID:iT3/p0k9.net] ここはPowerShellのスレじゃないんだがw $OutputEncoding と [Console]::$OutputEncoding は別もんなんか!? [Console]は[Console]::WriteLine とか使うときだけかな?
513 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:16:01.69 ID:n2bLSC2q.net] >>491 "usebackq delims="
514 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:21:07.12 ID:iT3/p0k9.net] [Console]::OutputEncoding と $OutputEncoding の
515 名前:両方をUTF8にしたらユニコード文字含めて文字化けしなかった。 ■Windows 10 の PowerShell 5.1より ・[Console]::OutputEncoding = [Text.Encoding]::UTF8 ?になる: echo あいう | clip.exe ?になる: echo (ユニコード文字) | clip.exe ・$OutputEncoding = [Text.Encoding]::UTF8 ?文字化け: echo あいう | clip.exe ?文字化け: echo (ユニコード文字) | clip.exe ???・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8 ?OK: echo あいう | clip.exe ??OK: echo (ユニコード文字) | clip.exe [] [ここ壊れてます]
516 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:22:18.15 ID:iT3/p0k9.net] なぜか書き込みにゴミが入った・・・ ■Windows 10 の PowerShell 5.1より ・[Console]::OutputEncoding = [Text.Encoding]::UTF8 ?になる: echo あいう | clip.exe ?になる: echo (ユニコード文字) | clip.exe ・$OutputEncoding = [Text.Encoding]::UTF8 文字化け: echo あいう | clip.exe 文字化け: echo (ユニコード文字) | clip.exe ・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8 OK: echo あいう | clip.exe OK: echo (ユニコード文字) | clip.exe
517 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:24:19.49 ID:ecgQNQwo.net] >>495 あら、そんなことだったんだ どうもありがとう
518 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:27:47.60 ID:iT3/p0k9.net] [Console]::OutputEncoding は chcp 相当のことをしていて、 コンソールのコードページを変更しているのに対して、 $OutputEncoding は出力の文字コード変換の制御をしてるっぽい
519 名前:デフォルトの名無しさん mailto:sage [2019/10/30(水) 14:46:57.29 ID:iT3/p0k9.net] [Text.Encoding]::UTF8 じゃなくて [Text.Encoding]::Unicode を使ってもうまくいく テキスト出力には、ASCII(?)モードとUnicodeモードというのがあるってのはわかってるんだよね https://blog.miz-ar.info/2017/01/wide-stdio-msvcrt/ > Unicode mode はさらに UNICODE モード (_O_WTEXT)、UTF-8 モード (_O_U8TEXT)、 > UTF-16LE モード (_O_U16TEXT) の3つに細分できる んで仮説 [Console]::OutputEncoding は OutputEncoding と書いているけど、 実際にはコンソールのコードページを変更するもので コマンドプロンプトとPowerShellのプロンプト入力の文字コードも変えてしまうから 名前に反して入力にも影響を及ぼしてるんじゃないだろうか? [Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8 というのは、つまりプロンプトからの入力をUTF8、出力をUTF8にするという意味 Powershell で文字コードを変更する(clip.exe へのリダイレクトもね) www.vwnet.jp/Windows/PowerShell/CharCode.htm とかは、コンソールのコードページを変更してない=デフォルトのcp932状態で echoしてるから入力がcp932、そしてデフォルトの$OutputEncoding=US-ASCIIで 文字化けするから(入力と同じ)cp932で出力しましょうねって話なんだと思う。 Windows 10以前は、コンソールのコードページ65001にバグが有って 使い物にならなかったけど、Windows 10で修正されたから コードページ65001でコマンドプロンプトもPowerShellも正しく動くようになったんだと思う (ただしこれは画面出力の問題であって、UTF8でバッチファイルを書いた時のパース処理は別の話)
520 名前:デフォルトの名無しさん mailto:sage [2019/11/02(土) 13:44:45.56 ID:+w7z2z4x.net] https://duckduckgo.com/bang https://duckduckgo.com/bang_lite.html !you "Batch File" !tw バッチファイル !tw "Batch File" !ig BatchFile !r BatchFile !so "Batch File" !gnuk "Batch File" !msd cmd https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/windows-commands
521 名前:デフォルトの名無しさん mailto:sage [2019/11/02(土) 14:20:34.65 ID:+UvDifof.net] !hatebu バッチファイル !qiita バッチファイル
522 名前:デフォルトの名無しさん [2019/11/03(日) 23:33:41.85 ID:/0rS8sv9.net] 質問なのですが、以下の内容を実行するバッチプログラムを作りたいのですが、どなたかご教示頂けないでしょうか。 Cドライブにある「A、B、C、D」という4つのフォルダとサブフォルダの中身全部を、 Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが、コピーする際以下の条件があります。 1.フォルダが1つしかない場合、その中だけにコピーする。 2.フォルダが複数ある場合は、それぞれのフォルダに1.と同様にコピーする。 宜しくお願いします。
523 名前:デフォルトの名無しさん mailto:sage [2019/11/03(日) 23:37:03.86 ID:Xh3slsXc.net] >>503 自分で作ってください
524 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 09:25:52.62 ID:0uHh5Wp4.net] 宜しくお願いします。と書けば誰かがやってくれるとでも? xcopy robocopy move for if set call dir findstr この辺使えりゃ出来るから自分で調べろ "バッチ バックアップ" とかでググれば腐るほど例が出るだろ
525 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 13:01:25.95 ID:Zu03xGz4.net] >>493-500 Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、 連続する空白類を除去して、クリップボードに入れる str = `powershell Get-Clipboard` str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換 ary = str.each_line.map( &:strip ) # 連続する空白類を除去する IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す clip.print( ary.join "\n" ) end >>503 そんな複雑な条件を、バッチでプログラミングするのは無理! Ruby などのプログラミングで、再帰的にコピーするか、 PowerShell で、robocopy を使うとか
526 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 13:46:43.19 ID:UHaJ6Kuw.net] > Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、 > str = `powershell Get-Clipboard` Rubyでできないなら、もう全部powershellで書いちゃえよw
527 名前:506 mailto:sage [2019/11/04(月) 15:48:40.94 ID:Zu03xGz4.net] >>503 Ruby で作った。 FileUtils::DryRun では、実際には実行しない require 'fileutils' src_dirs = [ "C:/Users/Owner/Documents/A/", "C:/Users/Owner/Documents/test/B/" ] target_dir = "D:/何々/*" # target の子フォルダの配列 dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) } return if dest_dirs.length == 0 # フォルダが存在しない src_dirs.each do |src_dir| # 2重ループ dest_dirs.each do |dest_dir| FileUtils::DryRun.cp_r( src_dir, dest_dir ) end end
528 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 22:13:40.62 ID:mdzUzifN.net] >>505 >>508 有難うございます。 それらでググって調べてやってみます。
529 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 12:51:32.26 ID:3/4kxzup.net] >>509 参考にどうぞ @echo off set s="C:\" set d="D:\XXXX" cd/d %s% for %%i in (A B C D) do call :x "%%~fi" "%%~i" pause & exit/b :x pushd %d% for /d %%j in (*) do xcopy /e /i %1 "%%~j"\%2 popd
530 名前:デフォルトの名無しさん [2019/11/05(火) 18:52:56.56 ID:ykrQtfUP.net] >>510 そんな複雑なことをしなくても、@echo offを除いて1行で書けるだろ。 @echo off for %%s in (A, B, C, D) do for /d %%d in (D:\XXXX\*) do xcopy "C:\%%s" "%%d\%%s" /e /i
531 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:10:31.32 ID:3/4kxzup.net] 多分 %%~fd やね
532 名前:デフォルトの名無しさん [2019/11/05(火) 20:28:07.61 ID:ykrQtfUP.net] %%dだけでフルパスになるから~fは不要。
533 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:42:07.32 ID:3/4kxzup.net] そうか失礼いたしました
534 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:50:46.27 ID:kqXSHliE.net] 火【22】義母と娘ブルース 11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)________14.15 これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって、 その時点での相加平均値を表示してくれるバッチファイルってできますか? INPUTを使うのかな あと、ウィンドウを開いている間生きている変数ってファイルへの格納、取り出しって そんな面倒なことしてるなら表計算ソフトでも使えってか
535 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 21:30:33.42 ID:HPnxYMOW.net] >>515 出来なくはないけれど set /a では整数しか扱えずバッチのみでやるのは面倒 やるならPowerShell とか wsh, js かな 単に平均出すだけなら電卓アプリの方が楽
536 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 22:38:05.69 ID:aoMnc07l.net] Dim str str ="" Dim num Dim ans Dim bln_Confirm Function main() str = InputBox("数値を入力",,str) If instr(str,"_") Then ans = Eval("(" & Replace(str,"_","+") & ")/" & UBound(split(str,"_"))+1) else ans = Eval(str) End If bln_Confirm = MsgBox("入力数値:" & str & vblf & vblf & "入力の平均:" & ans,3,"続ける?") str = str & "_" End Function Do main Loop While bln_Confirm = vbYes VBSならこうかな?
537 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 01:50:43.91 ID:ZR40S1lI.net] Ruby で作った。 最後の(終) の部分は、数字とみなされないので、無視される str = "11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)" ary = str.split( "__" ) # 数字部分を配列に入れる ary.map!( &:to_f ) # 文字列を浮動小数点へ変換する p ary.inject( :+ ) / ary.length # 合計 / 要素数
538 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 03:37:02 ID:sEBZ5Hrs.net] スレタイも読めないメクラか? ドヤりたいなら該当スレへ逝け
539 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 15:19:13.85 ID:Z1XrM+Fl.net] :ALCL @echo off &setlocal enabledelayedexpansion echo 少数切り捨て。少数以下は求めたい桁数まで0埋めして入力 echo 少数2位まで求めたい場合 ex: 12.4 -^> 1240 echo 00で Clear, 000で AllClear set i= :LOOP set /a i+=1 :INPUT set /p N%i%=数値を入力 : echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT) if !N%i%!==000 goto :ALCL if !N%i%!==00 ( if %i% leq 2 goto :ALCL if %i% gtr 2 set /a i-=2 ) set s= set r= for /l %%a in (1,1,%i%) do ( set s=!s! !N%%a! set /a r+=!N%%a! ) set /a r/=%i% echo %s% : %r% goto :LOOP
540 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 15:48:22.56 ID:Z1XrM+Fl.net] set /p N%i%=数値を入力 : if not defined N%i% (echo 入力無効 &goto :INPUT) echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT) 上のに真ん中の行追加で
541 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 20:50:16.92 ID:wTTuQQRz.net] バッチファイルは難しすぎ! 引数の概念がLinuxと全く違う
542 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 23:04:29.95 ID:wTTuQQRz.net] 空白が入ったパスをバッチファイルにわたすために ダブルクォートで括らないといけないが、 それをやると、変数にダブルクォートが入るのがクソなんだな しかも、if "%1" == "" とか書くと、引数がダブルクォート 一個だったときにエラーが出るとかいろいろ破綻してる
543 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 01:48:00 ID:4r3ojeSB.net] >>522 難しすぎというよりは適当仕様すぎ 仕様を安易に何回も拡張した、増築して迷路化した老舗旅館
544 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 04:42:48.88 ID:nSoHFrko.net] >>511 @for %%s 以下略じゃダメなの?
545 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:29:37.44 ID:lb8cogBR.net] >>525 それならdoの後のforとxcopyにも@付けろ 何でも一行にすりゃいいわけじゃないがな
546 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:59:41.26 ID:LFqMQC4+.net] >>523 %~1で外せるでしょ?
547 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 07:54:19.69 ID:isVFtAa0.net] >>520 さんありがとうございます ”これこそが私の求めていたものだ” そんな慣用句?ローマの名文句?ってあったっけと思ってしまいますた。 000と00の入力処理で使いやすくなっているのがセンスというか実際の使用を考えた親切な仕様だなと思います。 訂正できるのは本当に便利だ。 VBSとRubyで書いてくださった>>517 さんと>>518 さんにも感謝。 自分の要求仕様がどう解釈・解決されるの
548 名前:か勉強になります。 [] [ここ壊れてます]
549 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 09:58:22.71 ID:d6TMJd25.net] >>528 冗談で書いたんだが。。これなら同様のアプリ探した方がいいんじゃない? あと以下修正、>>521 部分も含む :INPUT set N%i%= set /p N%i%=数値を入力 : if not defined N%i% (echo 入力無効 &goto :INPUT) echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT) Clear後に空入力繰り返すと消したのが戻ってまたClearしてと繰り返す挙動が直る 実害無いだろうから敢えてそのままにするのも有り 既存の環境変数に set /p で空入力しても 空で上書き初期化されずそのまま残るみたい
550 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 10:37:33.42 ID:sEmiRyTj.net] >>527 どこ見てもその程度。みんな適当なんだよな。 まず最初に書いた例から。バッチファイル(test.bat)を 1.このように書いた時 if "%1" == "" echo 引数なし > test.bat " コマンドの構文が誤っています。 2.このように書いた時 if "%~1" == "" echo 引数なし > test.bat " 引数なし ※↑間違い。「"」という引数があります。 3. このように書いた時 if %~1 == "" echo 引数なし > test.bat " echo の使い方が誤っています。
551 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:19:13.92 ID:Z6Qb1qTa.net] Windowsバッチの仕様がダメダメというのはそのとおりだが、 引数が " だけというのは、かなり特殊な想定だよな。 これが大丈夫という言語ってあるのか? この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、 アプリの方で、\"〜\"で吐き出すように設定して、 バッチファイルで、この\を削除するようにすることで、 引数展開でおかしな動作をさせないようにしている。 e.g. fxのOpenWithアドオンなど
552 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:32:04.92 ID:sEmiRyTj.net] >>531 言語関係ない。コマンドプロンプトの仕様だから 例えばechoでダブルクォートだけを出力したいなら echo " と書くしか無い。 PowerShellとかコマンドプロンプトを使わないなら 閉じてないダブルクォートの扱いを変えることは可能だが、 コマンドプロンプトはもうどうしようもないw そしてこれ(もともとはMS-DOSの仕様)を前提に Windows版のC言語とかのCRTライブラリが作られ、 mainに渡る前に、そういう文字列を解釈するようになってる。
553 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:33:31.15 ID:sEmiRyTj.net] > この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、 > アプリの方で、\"〜\"で吐き出すように設定して、 いきあたりばったりなんだよなw 本当にここらへんの奴らは適当
554 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:40:37.56 ID:sEmiRyTj.net] https://thinca.hate nablog.com/entry/20100210/1265813598 \ は、 ダブルクォートの内外を問わず、" の前に \ を前置すると " 自身を表現できる。 \\" とすると \" の \ をエスケープしたことになり、 \" になる。この " は特殊文字である。 \\\" とすると \\ + \" になり、 \" になる。この " は " 文字自身である。 以下、\ が増える度に上記のようなエスケープを繰り返す。 \\\\" → \\" (" は特殊文字) \\\\\" → \\" (" は通常文字) 上記以外の場所にある \、つまり後に " が続かない \ は、いくつ重なっていてもその文字自身になる。
555 名前:デフォルトの名無しさん [2019/11/07(木) 12:53:05.11 ID:LDERshfw.net] >>528 バッチ/シェルスクリプトは、複雑なプログラミングをするものじゃない! Ruby, PowerShell, VBScript などを使うべき まず、データの仕様を作るべき。 その程度のデータなら、普通は、CSV 形式とか 1. どこかのサイトから、データの集積物を取得する 2. それをパースして、CSV 形式に変換する 一旦、CSV へ変換すれば、 その後は、Rubyなど、様々なプログラミング言語で処理できる 1の部分は、Ruby, Selenium WebDriver などで、クローラー・スクレイピングも出来る
556 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:58:16.29 ID:lb8cogBR.net] >>531 まったくスレチだけどG
557 名前:nuPGのパスワードを思い出した 引用符だけのパスワードを渡す場合は pass " >gpg -c --passphrase ^""" hoge.txt pass "" >gpg -c --passphrase """""" hoge.txt pass """ >gpg -c --passphrase ^""""""""" hoge.txt 何でこうなるかは知らんがGnuPGだけの話さ コマンド側でどう引数処理するかだよな バッチでは普通ダメだね [] [ここ壊れてます]
558 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:04:39.19 ID:sEmiRyTj.net] ダブルクォートを"""と3個やっても動かないときは、 """" に増やして動くか """"" に増やして動くか """"" に増やして動くか これぐらいまで試す あるある
559 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:26:56.23 ID:Z6Qb1qTa.net] >>536 クォートの先頭にエスケープが必要な場合でも、 後ろの方は何故かエスケープが不要なことがあるんだよな。 *nix系から移植したプログラムで、こういう事がたまに起きる。 いずれにしても、謎仕様…
560 名前:デフォルトの名無しさん mailto:sage [2019/11/08(金) 05:39:07.91 ID:78hADO4V.net] set x=echo %x% qqq set a=y set %a%=3 echo %y% どちらもできた
561 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:37:18.78 ID:9Z+ynpem.net] もう無理だw if "%value%" == "" echo match こんな感じのコードで、%value% にどんな文字 (ダブルクオート、スペース、カンマ、その他記号)が 入っていてもエラーにならないというコードを バッチファイルで書くのは不可能だw お手上げ\(-o-)/
562 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:55:41.49 ID:hmJLHo7y.net] IF NOT DEFINED VALUE
563 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:02:21.70 ID:9HGwW/1Y.net] >>541 あ、ごめん。実際は右側、値が入ってる。 if "%value%" == "abc" echo match
564 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:03:25.05 ID:hmJLHo7y.net] setlocal enabledelayedexpansion if "!value!"=="abc" echo match endlocal
565 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:14:34.88 ID:9HGwW/1Y.net] あれ?マジで?それだけでいけちゃうの?
566 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:22:47.16 ID:hmJLHo7y.net] これな、"abc"の方が要注意なんよ ^とか!とか入ってるとやばいかも setlocalの前に代入して if !a!==!b! とかやった方がええかもな
567 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:53:03.27 ID:9HGwW/1Y.net] >>545 右側、固定値なら大丈夫だよね?
568 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:00:20.08 ID:hmJLHo7y.net] うん多分、変な文字入って無けりゃね 遅延モードだと全角文字のリテラルにも一部副作用が有るかも
569 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:07:53.35 ID:9HGwW/1Y.net] なんだよ、全角文字の副作用って・・・ せっかく進んだのにw
570 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:15:55.11 ID:hmJLHo7y.net] setlocalの外で代入すりゃ問題ない 遅延の中では書くな あと、if !a!==!b! に " はたぶん不要
571 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:26:55.47 ID:9HGwW/1Y.net] setlocalの中で代入するとなにか問題があるのか・・・
572 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:37:46.76 ID:hmJLHo7y.net] ええと setlocal enabledelayedexpansion 〜 endlocal の中だよ
573 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 15:15:35.38 ID:hmJLHo7y.net] >>550 すまん。おれの勘違いだった 全角文字は関係無かった。無視してください でも^や!は要注意だけど
574 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 17:06:16.41 ID:hmJLHo7y.net] でもif文自体が挙動不審だからなあ if "ーー"=="""" echo 同じ
575 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:49:07.09 ID:9HGwW/1Y.net] >>553 ShiftJISだとだめだけど、バッチファイルをUTF8で保存したら大丈だったよ! ただし、それでも引数で渡すとダメだったけどwww
576 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:57:33.36 ID:9HGwW/1Y.net] >>553 それも enabledelayedexpansion 使えば大丈夫じゃない? setlocal enabledelayedexpansion set A=%1 if !A! == "" echo 同じ もうやだこの言語(?)
577 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:14:31.85 ID:9HGwW/1Y.net] @echo off echo %1 call :LABEL %1 exit /b :LABEL echo %* ↓ > test.bat a a a これが普通 > test.bat ^^ call :LABEL exit /b ECHO は <OFF> です。 頭痛いけどなんとなく理解できる > test.bat "^" "^" "^^" なんで^増えてんだよwww
578 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:24:41.89 ID:9HGwW/1Y.net] @echo off setlocal enabledelayedexpansion echo %1 set A=%1 call :LABEL "%A%" call :LABEL !A! call :LABEL "!A!" exit /b :LABEL echo %1 > test.bat "^" "^" """" "^^" """" もう意味がわかんないw これ人間が制御できるものなんか?
579 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 09:44:25.06 ID:fP398yW4.net] setlocal enabledelayedexpansion は >>540 対策で使えるけど、 それ以外はもっと制御が難しいかも・・・ 基本は通常のsetlocalで比較のときだけ 部分的に使ったほうが良さそう 今回は頑張ったけど、もうやらない。
580 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 15:37:42.63 ID:noq81T2Q.net] スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる
581 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 20:23:39.65 ID:u8+xJCBj.net] for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で for %%i in (a b c) みたいにワイルドカードが含まれてない場合は ファイルがあるなしに関係なく、a、b、cを繰り返す機能ってことであってますか?
582 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 15:51:47.87 ID:MT98n7t2.net] 多重フォルダの中身を 一番上のフォルダにまとめるスクリプトってどうやるの? できればフォルダをドラッグ&ドロップしたいんだけど
583 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 21:52:50.32 ID:ah6E9oLX.net] >>561 for /r %1 %%i in (*) do move "%%i" \
584 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 20:56:52.03 ID:/+k2TWLn.net] なんかこんなバッチファイルがあったけどうまく動かない for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagename eq SKRWATCH*" /fo "table" /nh`) do if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else (START /D C:\Users\user1\Downloads\skrw021 SKRWATCH)
585 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:18:40.00 ID:45qFz0UJ.net] >>563 うまく動かないでは状況が不明(エラーxxxが表示とか具体的に) ・tasklistは動くのか?(tasklist /?) ・そのままコピペしてるのなら動かなくて当然 (doの前に全角空白があるし、doの後も改行されてる 起動するパスがexeと空白で区切られてるがタイプミスか) ・対象はそのEXEで間違いないのか、パスに間違いはないか
586 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:26:40.79 ID:45qFz0UJ.net] >起動するパスがexeと空白で区切られてるがタイプミスか これはフォルダ指定だから記述に問題はなかったね
587 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 00:58:21.49 ID:f1OS2g5Q.net] >問題はなかったね 問題あるから動かねーんだろwwバカじゃね? いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ
588 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 03:01:51 ID:DFw2Dz+B.net] pause & exit コンソール入力で起動なら exit/b
589 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 12:24:50.17 ID:2S7bcPNj.net] テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね? ↓なイメージです key = value [version]
590 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:04:27.56 ID:Tu0gcZfO.net] batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う
591 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:53:46.39 ID:xBPN5HFi.net] エディタでの置換じゃ無理な処理数なん? batで文字列操作は事故の元 JSかP
592 名前:Sでも使えば? [] [ここ壊れてます]
593 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 17:43:27.76 ID:jZ8vbKIX.net] >>569 >>570 やりたいことはローカルセキュリティーポリシーテンプレートを書き換えたいんですよ seceditってコマンド使うんですけどその書き換えの部分を自動化したいんです 因みにPSでは使えないです
594 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:20:58.96 ID:Tu0gcZfO.net] これでいけないかな https://qiita.com/kurukurupapa@github/items/f4439fd5c33f6ebfec62
595 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:53:19.75 ID:p2TBD6cq.net] 一行ずつぐるぐる回しながら表示して [version]だったら、その表示の前に追加すればいいだけじゃん
596 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 09:08:09.78 ID:YDFq+t9K.net] いいやPS使ってもらう
597 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 10:25:48.48 ID:Wg+WlOX1.net] ファイルを一行ずつ読み込んで出力する処理に ちょこっと手を加えるだけだから簡単だな
598 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:16:31.45 ID:LvODftpp.net] 簡単だったら早く教えろよな キレちゃうぞこのやろう
599 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:47:37.77 ID:xinrmZtD.net] PSで簡単にできたからもういいわ
600 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 12:46:53.45 ID:7xPdmDWo.net] >>572 行頭が数字なのにeolの指示は無意味 delimsを数字にしないとまずいし 他人のバッチを鵜呑みにして理解していないバッチ
601 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 15:03:03.19 ID:8WRatKwZ.net] EUCテキストだから、ファイル名をそのままfindstrに突っ込むのは無理だな
602 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:04:24.91 ID:7xPdmDWo.net] >>579 これでどうかな? @echo off chcp 20932 set s="%~1" set "a=key = value" set "b=[version]" call :x > "%~2" goto :eof :x for /f "delims=" %%i in ('findstr /n "^" %s%') do ( set c=%%i setlocal enabledelayedexpansion set d=!c:*:=! if /i !d!==!b! echo.!a! echo.!d! endlocal)
603 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:15:57.27 ID:7xPdmDWo.net] >>580 を実行前は chcp 932
604 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 20:46:01.60 ID:8WRatKwZ.net] EUCじゃなくてUnicode(UTF16)だった
605 名前:デフォルトの名無しさん [2019/11/21(木) 22:34:33.13 ID:2C4HvUZs.net] コード変換ソフトがないと、無理かな。
606 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:42:46.40 ID:8WRatKwZ.net] いやfindstrにファイル名渡さないようにすればそれでいい 'type %s%^|findstr /n ^^' cmd /u /c hoge.bat in.txt out.txt
607 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:47:11.20 ID:8WRatKwZ.net] ^^じゃダメだった ^^^^か"^"だね
608 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:14:31.55 ID:t93OqxgW.net] >>568 Ruby で作った text = <<"EOT" [version] a [version] EOT re = /^\[version\]$/ text.gsub!( re ) { |matched| "key = value\n#{ matched }" } # 置換 puts text 出力 key = value [version] a key = value [version]
609 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:21:01.84 ID:8WRatKwZ.net] ただBOMが付かないね BOMが無いと使えないかどうかは怖いので試してない
610 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:14:32.18 ID:UfmR8W/F.net] >>587 @echo off & if "%~1"==":x" goto x set "a=key = value" & set "b=[version]" & set s="%~1" chcp 65000 > nul cmd/u/c "set/p a=+/v8-<nul"> "%~2" chcp 932 > nul cmd/u/c "%~0" :x >> "%~2" & goto :eof :x for /f "delims=" %%i in ('type %s% ^| findstr/n/r .*') do (set c=%%i setlocal enabledelayedexpansion set d=!c:*:=!& if /i !d!==!b! echo.!a! echo.!d! endlocal)
611 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:20:53.00 ID:UfmR8W/F.net] >>588 あらかじめbom付き空テキスト用意しておけば もっと簡単なバッチになるけどね
612 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:00:26 ID:iZoP+Nd2.net] FINDSTR: // は無視されました。 /n /rとするか、/nだけにするか
613 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:02:44 ID:iZoP+Nd2.net] /nrで良いか
614 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:47:17 ID:UfmR8W/F.net] そうだ
615 名前:な。直ぐ消えるので気付かなかった 動作はするようだが スペース入れた方が無難だね [] [ここ壊れてます]
616 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 08:47:38.56 ID:wKGQ5j7v.net] rubyきちがいきてるね
617 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 09:49:43.81 ID:VuiommTl.net] 無視無視
618 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 12:09:43.22 ID:f2CG40En.net] point of no return
619 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:13:10.37 ID:x4sN5Hm0.net] 質問した人は登場しないね ひょっとして>>577 が最後?
620 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:50:58.80 ID:xep2e/TT.net] awkが手軽で楽そうだがユニコードできたっけ?
621 名前:デフォルトの名無しさん mailto:sage [2019/11/25(月) 13:59:48.96 ID:6F6igyhI.net] WindowsならPSで良いだろ 文字コードもドトネトで扱える範囲で指定できるし
622 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:19:19 ID:NW9y+uW0.net] 用途:エクセルにある複数の画像URLを、指定したフォルダにDLさせたい コマンドでやりたい理由: ダウンロードソフトは一つのフォルダに全部DLするか、 一つのURLを開いてから一つづつDL先を指定するか、 URLをフォルダ構造に分解して保存するからDL後探すのが面倒で嫌 DownloadThemALLとか、DL雨とか、Tab Saveとか、Image Downloader… 全部ダメ; bitsadmin /transfer [name] [URL][DL path] bitsadmin /transfer [name] [URL][DL path] bitsadmin /transfer [name] [URL][DL path] …こんな風に並べて書いたところ、リストの最後らへんの二つぐらいを除いて PRIORITY:NORMAL FILES:1/1 BYTES:0/0 (0%) Transfer complete. でDL開始する前に次の行にいってしまうようです。しかも0バイトの指定したファイルを作ってしまいますw MS見ると複数やるなら1行に続けろとあるので bitsadmin /transfer [name] [URL] [DL path] [name2] [URL2][DL path2] としたが状況変わらず。 どうしたらいいでしょうか。timeoutでは変わりませんでした。
623 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:20:48 ID:NW9y+uW0.net] >並べて書いた batファイルにしてからダブクリのため
624 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:23:55 ID:ImxGWCjG.net] httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う ダウンローダーはその辺勝手にやってくれてるんだよ 取り敢えずこれ真似してforでlist読んでやってみれば? ttps://automationlabo.com/wat/?p=570
625 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:32:29.83 ID:NW9y+uW0.net] >>601 ありがとう、そこのサイトみてやってるんだ ちなみに今はHTTPS対応してるようで ttps://maku77.github.io/windows/cmd/download.html ttps://qiita.com/uratatsu/items/d77152ca121d0b779464 一件づつコピペだったらできるんだ ダウンローダーについては気軽にスレで聞いてるけど、 画像ごとにフォルダを指定して一気に保存ができるものはないみたい 昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz
626 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 13:46:11 ID:ISv3uuWx.net] しらんけど 前の行の処理が完了する前に次の物が始まるのがまずいなら Call でいんじゃないの?
627 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:15:56.61 ID:ImxGWCjG.net] call または start "" /wait コマンド
628 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:16:12.39 ID:JyI6kWkc.net] 特定に箇所にダウンロードして、ダウンロードが終わったら移動するんじゃダメなの? なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう 頭硬いのかな
629 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:22:21.16 ID:Rh/VLF1h.net] bitsadmin の代わりに cURL を試してみては
630 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:40:23.78 ID:jwtMC5+Q
] [ここ壊れてます]
631 名前:.net mailto: >>599 ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど [] [ここ壊れてます]
632 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:41:21.48 ID:ISv3uuWx.net] たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう
633 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:51:14 ID:NW9y+uW0.net] pushd %~dp0 for /f "tokens=1-3" %%A in (list.txt) do ( bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C ) echo listの内容 [dir] [url] [ファイル名] ダメでした…%%Aで留めれば行けるけど、他のフォルダにいれたいやつを上書きしちゃう curl…Linuxコマンドだと思ってスルーしていたけど調べてみます。thx >>605 100も200もあるURLごとのフォルダからぽちぽち移動できるもんならやればいいよ DownloadThemALLとか、古いFirefoxでしか動かんけどScrapbookとか、あなたが 言うような奴ならごまんとある。 私はそれはやってられんから他の方法探してます。 hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、 ファイルに行くまでに何回クリックいる?×100だよやりたいならどうぞ私は嫌ですw (単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい) つか、あなたのそのやり方やるぐらいなら、URLのリストをいっこづつコピペで 開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん。 だってDLしたあとで探す手間いらないですよね?
634 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:55:31 ID:JyI6kWkc.net] >>609 >だってDLしたあとで探す手間いらないですよね? なにを探すの? 空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん しかもダウンロードするファイル名分かってるんだろ? まとめてダウンロードしてからでも人間が探す必要なんかないじゃん ダウンロードディレクトリにあるんだから 脳みそ足りて無くない?
635 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:59:19 ID:NW9y+uW0.net] >>607 !! 調べてみます! まあそりゃねぇ 管理ナンバー URLっていう100個のリストにある画像集める必要があって 素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら 面倒になってきまして… ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。 で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。 599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)
636 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:05:17 ID:NW9y+uW0.net] >>610 これが見えないですか。そうですか。 >hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg >というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、 元々は 123 hogehoge.jp/moemoechan/hogenull/tio/hoge-hoge-hoge-hoget.html 124 hogehoge.jp/moemoechan/hogenull/star/hoge-hoge-hoge-hoget.html 125 hogehoge.jp/moemoechan/hogenull/maru/s/hoge-hoge-hoge-hoget.html 126 hogehoge.jp/moemoechan/hogenull/otto/s/hoge-hoge-hoge-hoget.html というエクセルのファイルにある各URLのにある画像をそれぞれ分けたい、ということ。 ちなみにこれ4つだからぽちぽちやってもいいんだけどさ…100行あるとしたらどう?w
637 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:25:21 ID:XdTMGSyO.net] batで外部プログラムの実行完了まで待つ呼び出し方法は start /wait って上で誰かが言ってるだろ
638 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:33:34 ID:ISv3uuWx.net] ツリー上に保存しなけりゃいいし ダウンロードフォルダのルートで
639 名前:*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ [] [ここ壊れてます]
640 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:49:02.22 ID:NW9y+uW0.net] ツリーに保存しないとダメだからそうしてるんだけど。 この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。 必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw waitはダメでした。 trancefar 〜 wait trancefar ~ は使い方間違ってますか? trancefar 〜複数URL wait もだめでした…
641 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:54:58.38 ID:SASMXjiT.net] start "" /wait bitsadmin でしょ
642 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:56:32 ID:ISv3uuWx.net] いちいち一個ずつ保存先指定するより楽だよ 検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
643 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:10:59 ID:XdTMGSyO.net] とにかくダウンロードが正常に終わるようにならないと先に進めないだろ ダウンロード時にフォルダが決まるならそれで問題解決だし 外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題 それが可能(例えばファイル名が行番号になってるとか)なら 落とした後にファイルを対応するフォルダに移動すればいい もちろんbat等の自動化で
644 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:20:26 ID:ImxGWCjG.net] start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C urlに&とか%は無いの?
645 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:26:58.84 ID:NW9y+uW0.net] >>617 それ、ブラウザでURL開いて、保存先フォルダ開いてD&Dのほうが早いよ? 今時のブラウザ、コピペと同時に開くんだから。 >>618 それな; >>616 ! そういう使い方になるのか!ありがとうございます! でも空ファイルだったw Dirとmdで生きてるのでもう脳みそ煮えてますわ…
646 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:34:10.52 ID:NW9y+uW0.net] >>619 ある。%20とか?とか。 ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456 ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234 こんな感じ。 bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・ えっ??まさか%%
647 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:50:52 ID:ISv3uuWx.net] >>620 一個ずつドラッグドロップする気?
648 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:51:59 ID:ISv3uuWx.net] >>618 ダウンローダーなら正常に終わるでしょ
649 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:57:32 ID:XdTMGSyO.net] >>623 一般的なダウンローダなら、urlの末尾がファイル名になるが 名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする aaa.jpg, aaa(1).jpgのように しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない これとリストにあるurlとの対応をとるのは大変だと思わん?
650 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:03:32 ID:JyI6kWkc.net] >>624 結局一つずつダウンロードする必要があるだろ? やっぱり何を探せなないのが全くわからんなぁ
651 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:04:08 ID:ISv3uuWx.net] >>624 重複はツリー上で保存すりゃ起きない
652 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:07:32 ID:NW9y+uW0.net] >>622 その方が早いと言ってます。どっちが早いか試してみたら? https://www.yahoo.co.jp/ ロゴとその左右のアイコン https://www.rakuten.co.jp/ ロゴから購入履歴までのアイコン https://www.nikkei.com/ ロゴと、その下の写真3つ DL先のフォルダ開く、URLひらく、D&D 3工程 URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程 フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程
653 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:10:41 ID:ImxGWCjG.net] >>621 詰み &なら "%%~B" とすれば行けたかもだけど バッチで%〜%のエスケープは出来なくないもののかなり面倒くさい powershellとか行
654 名前:チた方がいい どうせ自動化するのなら>>612 の元listから抽出してDLする方法をPSスレとかで相談してみれば? [] [ここ壊れてます]
655 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:15:21 ID:NW9y+uW0.net] で、私はその3工程ですらめんどくっせーってなって、3工程とも省けんかなと考えた #今後も同じ作業あるから、今なんとかできてると今後が楽。 ダウンローダーのダウンロード先の問題って、こうなるんだよね tp://imepic.jp/20191126/620210 ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ) お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると エクスプローラーに行く必要がある
656 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:15:53 ID:ISv3uuWx.net] >>627 エクセルに入れてるってんだから まとめてURL処理してるんでしょ D&Dをファイル数分しなくちゃならんのを言ってるんだが まとめてURL処理してるならD&Dは1回でいい
657 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:18:49.77 ID:NW9y+uW0.net] >>628 うへwわろすwそういうことか! Powershellはこっち以上に全くわからんな… 画像リストはGoogleスプレッドにぶんなげて作れてはいる ありがとう
658 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:19:23.77 ID:ImxGWCjG.net] 0バイトになるのは書き込み権限とか 管理者で実行しても変わらない?
659 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:23:52.25 ID:NW9y+uW0.net] >>632 transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが ここが0/0のままで次を始めてしまう Wait入れようが、Pauseいれようが、そこは同じですね
660 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:42:23 ID:NW9y+uW0.net] >>631 エスケープさせてできました!! コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で% を置き換えてやることにします。 ヒントありがとうございました。 みなさまもたくさんヒントありがとうございました。
661 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:50:12 ID:XdTMGSyO.net] >>634 ""で括ってやれば? ダメならちょっと上のsetlocal enabledelayedexpansionを参考に pushd %~dp0 for /f "tokens=1-3" %%A in (li.txt) do ( if not exist "%~dp0\%%A\." mkdir "%~dp0\%%A" start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD "%%B" "%~dp0\%%A\%%C" )
662 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 09:30:10 ID:/m01ABgd.net] >>634 おい逃げるなよ
663 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 23:47:18 ID:wNkvi2te.net] >>636 こわいよw もはや逃げることはできぬぞ、か。
664 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 14:56:56 ID:0+3TB6cR.net] トレンドに#業務ハックというのが上がってた。フーン ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは まさかしていませんよね?
665 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 05:01:38.65 ID:CfjKoCjD.net] 無理そうな気はしつつも質問 苗字<tab>名前<tab>年齢<tab>住所 田中<tab>太郎<tab>27<tab>大阪 山田<tab>花子<tab><tab>東京 佐藤<tab><tab>35<tab> こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど tokens=2,4 にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね これはもうvbsやVBAじゃないと無理ぽかな
666 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 07:15:07 ID:BTxKZMwl.net] >>639 delimsに指定してもダメなの?
667 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 07:44:27 ID:CfjKoCjD.net] 半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー
668 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 09:16:41.59 ID:3V5uc2tI
] [ここ壊れてます]
669 名前:.net mailto: >>639 tabの間にスペースを入れてみた。 これは前処理なので、あとはお好きにどうぞ @echo off set "t=<tab>" call :x > test2.txt pause & goto :eof :x for /f "delims=" %%i in (test1.txt) do ( set a=%%i setlocal enabledelayedexpansion set a=!a:%t%%t%=%t% %t%! set a=!a:%t%%t%=%t% %t%! echo.!a! endlocal) <tab>にはタブを入力 [] [ここ壊れてます]
670 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 01:05:38 ID:hz4JPg2Q.net] おお、値の無い列には半角スペースを入れてしまうわけか こりゃ気付かんかったサンクス
671 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 01:06:30.14 ID:7bx1tfw6.net] バッチでフォルダの表示方法とかかえられないよ? 詳細にして 表示の種類に長さとか大きさとか いれたいんだけど それをワンクリックでやりたい https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg 名前とか日付のとこに 長さとか大きさを追加するってことね
672 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 01:06:50.17 ID:7bx1tfw6.net] かえられないよの?
673 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 04:06:09.26 ID:t9dRWycX.net] >>645 レジストリ値弄れば出来たと思う。 昔職場の環境統一するのに使ってた。 詳細はRegshotとかで差分とって。 バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。
674 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 04:07:58.73 ID:t9dRWycX.net] >>645 設定後にShellの再起動も必要だったかも。
675 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 06:18:44.99 ID:SOm460Ps.net] >>646-647 レジストリか なるほど ちょっと色々調べてみます
676 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 16:55:31 ID:l8jrOhSU.net] こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか? まあ実用上の問題は無いんですが @echo off for /r %%i in (*.*) do ( echo "%%~nxi" echo. ) pause
677 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:08:49.51 ID:TZP99wd2.net] ピリオドとかコロンじゃなくて、カンマとかセミコロン使えばいいよ
678 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:16:19.46 ID:TZP99wd2.net] イコールもお仲間で、この3つが特別区切り記号らしいよ
679 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:18:33.06 ID:l8jrOhSU.net] >>650 はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました
680 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:23:09.51 ID:TZP99wd2.net] 特別区切り記号だから
681 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 19:05:52.87 ID:DvnYZkai.net] /rが悪さをしてるんじゃね サブフォルダの中でピリオドを2個にして
682 名前:デフォルトの名無しさん mailto:sage [2019/12/23(月) 21:26:36.07 ID:qZ1/nSQb.net] startコマンドでAPを起動後、「F11」をバッチファイルから入力するには、どう記述すればいいのでしょうか?
683 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 01:34:54.95 ID:vipj7N9s.net] echo class Program{static void Main(){System.Windows.Forms.SendKeys.SendWait("{F11}");}}>temp.cs FOR /F %%i IN ('dir /b /s %WINDIR%\Microsoft.NET\Framework\csc.exe') DO set cscexe=%%i %cscexe% temp.cs temp.exe
684 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 11:28:21.34 ID:E0w5VXt3.net] >>656 ワラタ
685 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 12:39:52.06 ID:32sm7KoS.net] >>656 すごいな、プロ?
686 名前:デフォルトの名無しさん mailto:sage [2019/12/26(木) 00:38:52.07 ID:ocAthgHy.net] ウイルスに使えそうw
687 名前:デフォルトの名無しさん mailto:sage [2019/12/26(木) 18:09:54.44 ID:gPRn8RL/.net] 職業 プロバッチファイルスクリプター(自称)
688 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 00:09:22.71 ID:CW1qzWXe.net] %1がフォルダ名の場合、サイズを示す%~z1は0以外の数字になる 何を表しているのか不明
689 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 07:50:28.51 ID:sZ8rOkNi.net] エントリーレコードのsizeじゃね?テキトーmaybe
690 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 12:01:21.14 ID:c8Bqzbdx.net] >>662 そんな数字が多いですね \windows\winsxs や * だと違う表示も出るので意味不明、バグなのか
691 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 17:54:09.99 ID:LCDlLvJS.net] for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください dir /tc 何か | findstr findstr /e /c:"<DIR> ." みたいにして取り出して整形するのは何か間違えている気がしてならないので
692 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 20:56:32.19 ID:gZNl6+48.net] %~t1 とかで出てくるのは更新日時じゃなかった? 作成日時ならそれでいんじゃね? for /f "skip=3 tokens=1-3,5,6 delims=/: " %a in ('dir /tc %windir%') do ( echo %a%b%c%d%e goto :LOOPOUT ) :LOOPOUT pause 日時はシステム依存で表示形式変わるので整形したい形に適宜tokensやdelims、echoのとこ弄るといい 何に利用するのか知らないけど powershell なら秒まで取得出来るしバッチより痒いところに手が届く
693 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 20:59:21.16 ID:gZNl6+48.net] 修正 %a→%%a echo %%a%%b%%c%%d%%e
694 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 08:18:43.19 ID:6GenP8Ub.net] ありがとうございます 何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、 って話になるんですね、ミリ秒単位までいけるみたいですし
695 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 09:56:56.50 ID:+cYn5CAB.net] forfiles でフォルダの更新日時も得られる、ただしファイルが多いと遅い forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime" dirだと得られない秒もOK、仕様がばらばら、バッチは不思議
696 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 13:02:11.21 ID:fh28MJ7p.net] 気まぐれに試してみたらskip=2と3の結果が同じでskip=4だった ifでちゃんと絞った方が良さげ for /f "tokens=1,3,4* delims= " %a in ('dir /ad /tc %windir%') do @if "%d"=="." @echo %a %b
697 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 01:23:14.19 ID:/SGph6WX.net] dir ? 親DIRがピリオド2文字なのに なぜ表示されるのか
698 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 07:59:26.77 ID:T5YxFwCT.net] . と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ だから .. の(作成|更新)日時は自ディレクトリと同じ .. は親ディレクトリを指し示すが親ディレクトリとは別のモノ なぜと問われても、そういう仕様だから、としか
699 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 09:10:30.39 ID:/SGph6WX.net] >>671 ピリオドは区切り文字であり、 ワイルドカードの?の文字数のカウントに含まれず。 ピリオドが先頭だと、最初のトークンは空文字列となり、 ?は一文字以下の文字列を表すので、それに合致するわけかな。 ちなみに >>670 はそれより前のレスとは無関係
700 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 07:41:36.68 ID:QOfK3b7c.net] >>670 dir /b ? だと表示しない謎
701 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 09:00:53.84 ID:VNkic2h1.net] ディレクトリと同じ扱いだから
702 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 09:51:26.33 ID:8LUwvv7f.net] 先頭にドットがあると要注意だよな ワイルドカードがドットを無視する場合があるから >copy nul .txt >copy nul txt >dir/b .txt txt >del txt* >dir ファイルが見つかりません
703 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 10:00:17.73 ID:cX66OF4O.net] 簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって、なんでbatで書いちゃったんだろってなるのいい加減
704 名前:竄゚たい [] [ここ壊れてます]
705 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 05:17:30.74 ID:yWGnEtOx.net] @echo off for /L %%a in (1,1,666) do set /a a+=%%a for /L %%a in (2,2,666) do set /a a+=%%a echo %a% pause for /L で遊んでたらなんか凄いの見付けた
706 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 07:12:55.26 ID:hqwlnXXW.net] >>676 PowerShellでいいんじゃね?
707 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 04:34:01.53 ID:AQjsaOZ5.net] ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど win10です テスト.bat ----------------------- @echo off for %%f in (%*) do ( echo %%f ) pause -------------------------- だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど( ちなみに @echo off echo %1 pause だけだとちゃんとフルパスで表示されます %%と%の違いってなんですか?
708 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 05:40:03.52 ID:FVJQifjo.net] 引数が最低1つ以上の場合 :LOOP echo "%~nx1" shift if not "%~1"=="" goto :LOOP pause 引数が0個の可能性がある場合 :LOOP if "%~1"=="" pause &exit /b echo "%~nx1" shift goto :LOOP
709 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:29:31 ID:B/evOggr.net] shift使わない方法でお願いします
710 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:39:02 ID:FVJQifjo.net] >>679 その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて 引数がクオートされていない場合に上手く行かない がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認
711 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 18:45:30.02 ID:Xdf1G9+g.net] WSLって専用スレあったりする?
712 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 18:48:00.37 ID:T5MzU9c3.net] >>680 あー>>680 のやり方の方がいいわせか >>682 できましたありがとう
713 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 06:36:29 ID:77YAYmoS.net] >あー>>680 のやり方の方がいいわせか そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ バッチはどうやってもバグを内包する。極論動けば何でもいい バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる そういったのを理解した上で簡単な事をやるくらいならいいけど 少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる 面倒を避けたいなら初めからPowerShellとかでやった方がいい 今から覚えるなら尚更
714 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 08:02:35 ID:UuH5oHRt.net] >>679 ドラッグ&ドロップ したファイル名に たぶん ) があるんだろう a(1).txt とかね なぜ落ちるか自分で考えてみろ
715 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 23:29:59.70 ID:jJ2WRqDf.net] >>686 それな バッチはこういう罠があるからPSに移行したわ コメント欄に迂闊に括弧も使えないしこわいこわい
716 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 20:57:19.47 ID:qiuXI8ht.net] ネストされた環境変数が展開されない事象について https://social.technet.microsoft.com/Forums/ja-jp/0add404a-4157-416f-bf15-0ad455102d85/12493124731248812373124281238329872226592279325968123642363738?forum=Wcsupportja
717 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:47:29 ID:Nyn5xlpx.net] 2つのウィンドウで別フォルダを表示してファイル存在の有無によって選択/解除ができその後コピーや移動ができる、そんなファイラーがあったら便利だなと探してました。 WinZIP関係のソフトで7-zipというのがあり、なぜか
718 名前:解凍するとその中に7-zip file managerというのが入っていて 起動してみると左右で別フォルダを表示することができオッ、と思ったのですが、存在を比較する機能はありませんでしたorz ファイル存在比較 で検索したら 【バッチ作成】の文字が目にとまりページを開くと次のようなバッチファイルでした。コピー/移動作業前の確認用に 便利だなと思いました。実際はif existでもいいし、自分用に少し書き換えました @echo off echo AにあってBに無いファイル pushd \A for %%X in (*) do if not exist \B\%%X echo %%X popd echo BにあってAに無いファイル pushd \B for %%X in (*) do if not exist \A\%%X echo %%X popd popd、pushdってアスキーのラーニングシステムシリーズ本のMS-DOSのやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした。 [] [ここ壊れてます]
719 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:31:16 ID:Jc09ZNe5.net] そんなことまで無理にcmdでやらんでも・・・ WinMergeすら入れさせてもらえない環境なのか?
720 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:15:34 ID:+0QHC3Wk.net] 日記?
721 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 22:49:16 ID:lbmGsP+l.net] "送る"って意外と不自由なんだな… バッチファイルでワンクッション入れて(゚д゚)ウマー
722 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 23:14:40 ID:Vj4Y99PX.net] 何が不自由なの
723 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:40:29.71 ID:6k+E856c.net] このバッチで何か入力しても a が消える @echo off set /p a=data= rem %a=% echo data=%a% pause
724 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 22:45:14 ID:VR7HU+gm.net] >693 勉強不足があるかも知れんが ・さっさと画面を閉じちゃう(cmd/kで回避) ・%1に入れてくれない ・ファイル名の後ろにオプションが付けられない
725 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 23:26:29 ID:D5cDwkr0.net] ワンクッションってそういう意味か 昔からスクリプトを送るに登録することなんて当たり前のことだったけどね むしろexeしか登録しない人はこのスレにはいないとまで思ってた
726 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 11:16:38 ID:JWfC0/9e.net] >>694 何かエラーすると正常になるよ(笑) @echo off set a=123 rem %a=% if defined a (echo 1) else echo 0 echo a=%a% nul 2> nul if defined a (echo 1) else echo 0 echo a=%a% pause 結果 0 a= 1 a=123
727 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:23:32 ID:62ExnvKA.net] 叩いたらスクリーンセーバーをオフにしたく、killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど、Windows10のタブレットモードで動かすとスタートメニューが起動してしまう。 元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな? ソフトを立ち上げっぱなし→スクリーンセーバー起動→条件下でスクリーンセーバーkillバッチ→立ち上げてたソフトに戻る ってのにしたいのにkillバッチ→スタートメニューになってしまう あと、バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない…
728 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 13:13:43 ID:0DoxGo8j.net] スクリーンセーバー動いてるのに、 どうやってバッチ叩いてんの? さっぱりわからん
729 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:18:37.16 ID:B/3TWI1a.net] >>698 ネタだよね?
730 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 12:30:00.59 ID:DitzTCfU.net] 何かをトリガーにしてタスクから叩くって事じゃないかな
731 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:11:28 ID:DSTYXSth.net] 特定のキー操作で解除するタイプのスクリーンセーバーなのかな? でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど
732 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:51:57.47 ID:hksaF/sY.net] Windows7標準のmklink
733 名前:でシンボリックリンクを作ると リンクのタイムスタンプ(作成、更新、アクセスいずれも)は リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり 普通のファイルのようにはタイムスタンプを変更できないようだけど 変更する方法ある? ハードリンクなら同じものを見ることになるから勝手に揃うけど 使い分けの方針が定まらなくてあまり使ってない [] [ここ壊れてます]
734 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 23:47:43 ID:9k84sg+E.net] >>703 シンボリックリンクの実体はファイルだからSetFileTimeで変更できるらしいぞ らしいってのは俺がシンボリックリンクつかったことないからね
735 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 23:11:39 ID:2Mmdz3hG.net] Windows Vistaは2017年にサポートが終了しましたがWindows Server 2008向けのセキュリティ更新プログラムを手動でインストールすることができていました。 ところがどの順番でどれをインスコすればいいのか面倒、、、それを解決するバッチプログラムを作った方がいます。 バッチファイルの記述がフムフム、へぇ〜という感じで自分にはとても勉強になりました。興味ある方はどぞ 創造の柱 blog.livedoor.jp/pillars_of_creation/archives/1831755.html
736 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 10:56:05.36 .net] このスレで聞くべきなのか分かりませんが、Windowsで数千個のPDFを一括処理したいので、取りあえずここで聞いてみます。 PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で、"表示"、"ページレイアウト"、"倍率"を設定できますが、 1つ1つ手作業で設定するのはさすがに無理です。 Javaの様なプログラミング言語でも、他のアプリでも何でもいいんですが、この文書のプロパティを一括で設定する方法って何がありますか?
737 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 18:54:16 ID:k6OnWQi4.net] それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?
738 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 19:52:05 ID:LC2xv/4E.net] 変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね
739 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 20:27:13.25 .net] >>707 Acrobat側の表示方法を変えるのじゃ無く、PDF側で変えたい
740 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 20:53:17.46 ID:k6OnWQi4.net] そもそもPDF側に表示方法が保存されてるものなの? 結局Acrobat側の問題じゃない?
741 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 22:35:05.89 ID:tH0Sn0AY.net] 「pdf コマンドライン ページレイアウト」でググったら cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた これ、見開きを縦スクロールにしたり単ページにしたりできて面白い "倍率" が 2017/10 の時点で無理らしいけど
742 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 01:20:56.78 ID:3WOBAGMl.net] ID消して質問してるのがすげー腹立つな 本当に解決を望んでるなら逆にコテ付けるぐらいできんのか
743 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 02:44:24 ID:X7klH3J+.net] windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど
744 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 11:05:03 ID:6HUykZ9A.net] 今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな いちいちコードページ指定するとなんかウィンドウが切り替わって重いし cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
745 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 14:03:40.50 ID:a+OnqKl3.net] MSはレガシーのために保守してるだけだろ powershell使え
746 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 16:57:49 ID:Vod
] [ここ壊れてます]
747 名前:BEB+r.net mailto: 例えば、こんなバッチをutf-8で作成して実行する。 できたtest.txtを見たら1行しかない。なんでだ。 @echo off chcp 65001 call :test > test.txt exit :test echo テスト echo テスト [] [ここ壊れてます]
748 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:12:48 ID:fYZW+FI9.net] このスレで、utf-8 のバッチファイルにするなら、 行末は半角英数な文字にしとけ というのを学んだ、>>262 からの流れ なんでなのかはいまだに知らない
749 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:22:50 ID:D5FH+wQt.net] 2つめのechoがエラーになってるね echo テスト echo テスト と間に空白行を挟めば正常だがどういう理屈なのか分からん
750 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:31:32 ID:VodBEB+r.net] れすサンクス
751 名前:デフォルトの名無しさん [2020/04/21(火) 19:56:52 ID:vK3trFFL.net] %2つというのは、何らかのエスケープですか? また、forを使うときにfor %iなどとしますが、%の意味がよくわかりません
752 名前:デフォルトの名無しさん [2020/04/21(火) 21:11:11 ID:vK3trFFL.net] フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか forを使用してインデックスを連番として付与する感じだと思うんですが ファイルはこんな感じです 犬.txt 猫.txt 猿.txt
753 名前:デフォルトの名無しさん [2020/04/21(火) 21:17:03.32 ID:FdhLTsrP.net] >>720 %は互換性や拡張などのおかげで大変ややこしい事になっている 説明するには小一時間かかるのでここでは控える事にする
754 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 21:26:09.14 ID:M3jMZi3+.net] >>720 %は変数を定義する時に使うよ %iで「iという変数」になるよ バッチプログラムで使う時は%%iにする必要があるよ https://www.pg-fl.jp/program/dos/doscmd/for.htm 「%」のページも読んだ方が良いよ
755 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:46:58.98 ID:HADG6GDb.net] >>721 Ruby で作った。 ただし、DryRun なので実際には実行されません。 001.txt, 002.txt に変わります require 'fileutils' # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く dir_path = "C:/Users/Owner/test/*" target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す Dir.glob( dir_path ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる # format で、0埋め3桁表示にする。extname は拡張子 # ファイル名は、001.txt, 002.txt など dest_path = target_dir + "/" + ( "%03d" % idx ) + File.extname( full_path ) FileUtils::DryRun.move( full_path, dest_path ) end
756 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:54:20 ID:h/bjIQIw.net] rubyはスレ違い
757 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:04:39.20 ID:s3lLVMWt.net] 3桁連番付けただけ @echo off & set n=1001 for %%i in (*.txt) do set a=%%i& call :x goto :eof :x ren "%a%" "%n:~1%-%a%" & set /a n+=1
758 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:14:39.66 ID:J0u+GdjC.net] リネームは結構難しい リネーム後のファイルが再びリネーム対象となる場合がある
759 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:27:06 ID:alPdontK.net] set N=1000 :LOOP if "%~1"=="" exit /b set /a N+=1 ren "%~1" "%N:~-3% %~nx1" shift goto :LOOP
760 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:28:37 ID:s3lLVMWt.net] リネーム後のファイル名が既存だったりするし
761 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:49:32 ID:GY5lnYbX.net] リネームは一覧を一旦ファイルに出力してから回した方が安全だよ それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
762 名前:vbsかjsかpowershell [] [ここ壊れてます]
763 名前:724 mailto:sage [2020/04/21(火) 23:57:26 ID:HADG6GDb.net] >>724 のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" ) で、そのフォルダ内のすべてのファイルを取得しているから、 各ファイルを、rename していく途中で、 rename後のファイルを、再びrenameすることはない
764 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 00:04:16 ID:vEO7RF6u.net] >>730 ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね? UNICODE文字は関係あるかね?
765 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 06:52:59.32 ID:gobEj/px.net] >>721 @echo off & set "n=1001" & set t=tmp_dir md %t% & for %%i in (*.txt) do set a=%%i& call :x move %t%\* . > nul & rd %t% & goto :eof :x move "%a%" "%t%\%n:~1%-%a%" > nul & set /a n+=1 tmp_dirの名前は何でもいいが既存の名前を避けてください。
766 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 09:12:13 ID:UZ0N9G3p.net] >>732 >UNICODE文字は関係あるかね? SJISに含まれてない文字が入ってると酷いことになる
767 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 10:16:03 ID:MJO3kN2U.net] 駄目文字のせいでSJISコードがバグると言うならまだわかるが その逆って意味がわからないな MSは全くテストしてないってことか
768 名前:デフォルトの名無しさん [2020/04/22(水) 11:07:12 ID:/W5c3Vma.net] >>722-735 どうも 勉強中です
769 名前:デフォルトの名無しさん [2020/04/22(水) 11:53:22 ID:/W5c3Vma.net] 複数行を一行にまとめる場合は、&でつなぐんでしょうか? これが改行と同じ意味でしょうかね。
770 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 12:07:17 ID:vEO7RF6u.net] >>736 @echo off & set n=1001& chcp 65001 > nul for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x goto :eof :x ren "%a%" "%n:~1%-%a%" & set /a n+=1 >>734 コードページ変えればいいだけ
771 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:08:42.79 ID:nR8TNEgs.net] >>737 複数行をまとめるって、、 文字列の足し算の話? コマンドを複数行に分割して記述する話? (継続文字のこと?)
772 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:11:46 ID:nR8TNEgs.net] >>739 または複数コマンドを一行で記述する話?
773 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 20:05:53.95 ID:j1ZYXyL3.net] >>735 コマンドプロンプトは自体はUNICODE対応 各種コマンドもUNICODE対応 だけどバッチファイルは過去の互換性が必要なので デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。 その設定はchcpで変えることが出来る 単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが forでバッチファイルの世界に招き入れたら、 chcpの設定によって文字コードの変換が行われる テストはしてるだろ。この文字コード変換は仕様なので バッチファイルでUNICODE文字を扱いたければchcpで UTF-8に変更しなければならないというだけのこと
774 名前:デフォルトの名無しさん [2020/04/23(木) 06:47:17 ID:153+oMoq.net] >>739 バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
775 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 08:24:04.38 ID:5iduMLE+.net] >>742 複数行をコピペじゃ駄目なの? 例えば、この内容をメモ帳に記述しておいて rem ―- ここから ―― dism /online /cleanup-image /restorehealth sfc /scannow rem ―- ここまで ―- 4行をコピペする
776 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 09:07:36 ID:Z6s7Y3Lu.net] >>742 複数コマンドを1行で実行したいということなら、、、 A & B ... A実行後にBを実行 A | B ... Aの実行結果をBに渡して実行 A && B ... Aが成功したらBを実行 A || B ... Aが失敗したらBを実行 長いコマンドを複数行に分割したいなら、、、 Sentence1 ^<改行> Sentence2 (サーカムフレックスで継続)
777 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 12:04:05.59 ID:qTwHi2aC.net] ()で囲めばいい。 (timeout /t 300 cd d f:\hoge for %f in ( *.jpg ) do ( ・・・ ) ) 正式名称が何かは知らないが勝手にブ
778 名前:ロックと呼んでる。 [] [ここ壊れてます]
779 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:02.07 ID:WFX6w8Jo.net] >>744 そういうのがあるのか、| 以外知らなかった
780 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:42.71 ID:WFX6w8Jo.net] >>745 これも知らなかった
781 名前:デフォルトの名無しさん [2020/04/23(木) 15:25:29.03 ID:153+oMoq.net] >>743 コピペでももちろんいいですが、知っておきたかったです
782 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 16:03:20.39 ID:eZrYYRVL.net] なんでバッチ嫌なの?
783 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 17:31:56.25 ID:P2MaiEJS.net] >>748 だったらこんなところで聞くんじゃなくて 一次資料に当たる努力をしなよ
784 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 21:20:47 ID:M8I+Acr1.net] >>745 それ駄目。 遅延変数展開しないと痛い目に遭うよ。
785 名前:デフォルトの名無しさん [2020/04/26(日) 18:05:24 ID:FVxXRtXH.net] 連番をつけるコードでまだ躓いています hoge.txt hogehoge.txt を hoge(1).txt hogehoge(2).txt としたいです echo off & for %i in (*.txt) do (ren %i ???) このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?
786 名前:デフォルトの名無しさん [2020/04/26(日) 18:36:58 ID:FVxXRtXH.net] バッチでset /aなどのオプションがありますが、/aは計算を伴う場合に使うそうです。 この/aに意味はあるのですか? 何らかの単語の略だと覚えやすいんですが。
787 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 18:40:50 ID:Pfsg7A5O.net] その程度ぐぐれば出てくるでしょ インデックスのカウント用変数が必要+変数の遅延展開 丸括弧のエスケープが必要 aはarithmeticの略
788 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 20:15:42 ID:cczyU4e/.net] @echo off & set n=1& chcp 65001 > nul for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x "%%a%%" goto :eof :x ren %1 "%~n1(%n%)%~x1" & set /a n+=1
789 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:00:20.95 ID:zKIVBOto.net] 1Point ノウハウ dir ですべてのファイル、フォルダを表示したい場合は dir /A
790 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:18:32 ID:DxwpR+0O.net] 普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの? 何か理由あるん?
791 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:22:15 ID:YV1WqKFq.net] >>757 ファイル名に「%」入ってるとマズくない?
792 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:49:29 ID:ceHl0duT.net] シェルスクリプトってお手軽省略表記にこだわりすぎるあまり エスケープ処理が複雑化しバグりやすくなって本末転倒だよな
793 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:57:02 ID:l2PF55i3.net] そんなところで躓く能なしは、他の言語で書いても同じだよ
794 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 13:01:40 ID:DKHJb1hS.net] 他の言語でもエスケープは必要なことはあるし同じこと ただbatのように自身を置換して逐次実行するするようなことは eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ
795 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 16:44:00 ID:3RXW9/E3.net] 要するに分かりにくい ここで初心者にイロハから質問されてもレスがしにくい リネームソフトでも使え
796 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 17:37:46 ID:7TaGv6sC.net] >>759 シェルスクリプトでエスケープ処理が複雑なんて したことがないんだがどういうケース? むしろバッチファイルのほうがややこしすぎる バッチファイルでダブルクォートはいつつけるか言える? スペースが含まれたファイル名とか バッチファイルでこれの出力結果は echo "C:\Program Files" ↓これです。(ダブルクォート含む) "C:\Program Files"
797 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:05:03 ID:3RXW9/E3.net] どういうケースって、すぐ上の奴だろ
798 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:18:07 ID:7TaGv6sC.net] >>764 もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
799 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:19:14 ID:7TaGv6sC.net] シェルスクリプトっていうのはUnixやLinuxの /bin/shとかbashのことなんだが
800 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:20:52 ID:RB8xSOb3.net] ファイル数
801 名前:からんけどリネームソフト使えば一分かからんで終了 [] [ここ壊れてます]
802 名前:デフォルトの名無しさん [2020/04/28(火) 20:35:28 ID:C/yTg51l.net] >>766 俺の定義ではバッチファイルはシェルスクリプトだ config.sysに shell=command.com /e:1024 とか書いてたからな
803 名前:デフォルトの名無しさん [2020/04/28(火) 20:39:22 ID:C/yTg51l.net] ちなみにMS-DOSにはエスケープ文字なんて無い
804 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:40:45 ID:f4hk4dsD.net] >>768 意味わかんないから調べたが、 今では全く通用しない話じゃねーかよ。 てめーの定義を押し付けんな。
805 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:51:25.37 ID:l2PF55i3.net] >>770 頑張ってググってきたんだからほめてやれよ
806 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 22:38:03.31 ID:0mXw36Cx.net] >>769 Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。
807 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 23:55:09.09 ID:3RXW9/E3.net] cmdはシェルだ。定義も糞もない
808 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 00:05:03 ID:kLiglYQz.net] >>768 cmdじゃないじゃん
809 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:34:57 ID:bLWOmnfL.net] UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ shやbash=cmd シェルスクリプト=バッチファイル シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
810 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:56:52.10 ID:SXZJio07.net] とはいえ逆にunixでバッチがどうとか言うと違和感あるしな >>766 みたいな感覚が一般的
811 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:15:11 ID:sus1L+2H.net] >>775 > シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前 シェアならLinuxのシェルスクリプトの方が多いよ 今はsystemdに置き換えられつつあるが、起動処理の多くで シェルスクリプトが使われていた。 各アプリのビルドなどでもシェルスクリプトは使われている。 それに対してバッチファイルは殆ど使われていない。 そもそもWindowsのコマンドは、他のコマンドの出力を読み取って 別のコマンドで処理するように設計されていない 単に呼び出すだけ。だからバッチファイルという名前になってる 例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合 なにも表示されないのでスクリプトとして使いやすいが Windowsのcopyは人間用のメッセージがいちいち出る コマンドの出力を変数に入れるだけでも大変 遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を するためだからバッチファイルはシェルスクリプトだけでなく PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている 一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが 面倒になってるので両立してるシェルスクリプトにはかなわない
812 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:22:12 ID:VzuV0Enx.net] アスペがうだうだ言ってるだけで全く「会話」が進行していないな
813 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:36:25.95 ID:SXZJio07.net] スレチだから、もうやめろ
814 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:51:09.96 ID:sus1L+2H.net] やなコッタ
815 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:15:38.24 ID:f6LPbIhG.net] パンナコッタ
816 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:43:10 ID:sus1L+2H.net] メロンパンナ
817 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 00:25:02 ID:6g7fIyNp.net] マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢
818 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 23:56:54 ID:4NDFLh29.net] アッサムティー好き、いいよね
819 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 20:45:42 ID:I+dUmCMk.net] カタコッタ
820 名前:デフォルトの名無しさん [2020/05/07(木) 18:46:37 ID:jiFNKMfo.net] 滅茶苦茶初歩的な質問ですまん バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
821 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 18:51:16 ID:cw3NlGJG.net] FOR /F ["オプション"] %変数 IN
822 名前:('コマンド') DO コマンド [コマンド パラメーター] または usebackq オプションの場合: FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター] [] [ここ壊れてます]
823 名前:デフォルトの名無しさん [2020/05/07(木) 18:51:30 ID:jiFNKMfo.net] もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい
824 名前:デフォルトの名無しさん [2020/05/07(木) 19:01:03 ID:jiFNKMfo.net] >>787 ありがとう、いけたわ logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど、これは他の問題かもしれんな
825 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:33:24 ID:lct9jPsZ.net] 昔だったら tail -f
826 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:34:28 ID:2gF3mugX.net] >>789 標準出力じゃなくて、標準エラー出力の方にprintしてるんだろ ('py foo.py 2^>^&1')
827 名前:デフォルトの名無しさん [2020/05/07(木) 19:47:29.96 ID:jiFNKMfo.net] logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた 出力取得できたのでまあよし
828 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 20:17:47 ID:2gF3mugX.net] >>792 @echo off setlocal enabledelayedexpansion set n=0 for /f "tokens=*" %%i in ('py test.py 2^>^&1') do ( set IN!n!=%%i set /a n+=1 ) set /a n-=1 for /l %%i in (0,1,%n%) do ( echo.!IN%%i! ) endlocal
829 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 09:27:08.95 ID:hWMQZbFi.net] >コマンドプロンプト入門 Kindle版 2020年にこれを出すとはチャレンジャーすぎるな
830 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 16:03:14 ID:PeLhefIP.net] amazonで、確認すると、2019/09の出版みたいですね。 どうせなら、power shellの本出したほうが良かったかも。
831 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 18:45:23 ID:NJ7uTfC9.net] ファイル名に「b」を含むファイルをコピーするときに たとえば abc.txt というファイルがあって copy *b*.txt def.txt がオッケーで copy *b* def.txt がエラーなのはなぜですか? *は0文字以上の文字列なので 両方とも成功すると思っていたのですが
832 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:05:09 ID:fhydWmjd.net] >>795 KindleストアにPowerShellのがいっぱいあるやん
833 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:55:35 ID:UaCqmgBQ.net] >>796 普通にできるけどどんなエラーが出るの? ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな
834 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:59:26 ID:fhydWmjd.net] *b* が一つでもゴミが付くしね(0x1A)
835 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 20:41:18.51 ID:H5g1ckea.net] Windows Terminal で音を鳴らすにはどうすればいいですか コマンドプロンプトではControl-Gを出力してたんですが Windows Terminalでは無視してくれやがります
836 名前:デフォルトの名無しさん [2020/05/23(土) 22:23:07.24 ID:105ldQbQ.net] start beep.wav
837 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 22:45:59.81 ID:H5g1ckea.net] そんなんだったら >copy con beep.cmd echo ^G waitfor /T 3 waiting ^Z 1 個のファイルをコピーしました。 >start /min cmd /d/c beep.cmd とするけどもっといい手はないかなと
838 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 23:00:15 ID:H5g1ckea.net] ああstartで自分を呼んで鳴らせばいいんだ 自己解決しました
839 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:25:04.68 ID:VYuvM9gt.net] >>802 echo ^G>beep.dat としておいて type beep.dat beep.dat は 0x07 (1byte)だけ
840 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:40:12.55 ID:f4O9jhZ+.net] その手がWindows Terminalでは使えないって話 https://aka.ms/terminal-documentation Windows ターミナルの概要 | Microsoft Docs
841 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:46:46 ID:VYuvM9gt.net] >>805 そうでしたか Windows Terminal、使うか
842 名前:デフォルトの名無しさん [2020/06/03(水) 20:30:01 ID:H
] [ここ壊れてます]
843 名前:abAm56l.net mailto: バッチでやるような処理でも 勉強兼ねてpowershell使って処理するようにしたほうがいいですか? [] [ここ壊れてます]
844 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:31:25 ID:5eIQQTQm.net] 勉強でなら、そりゃそうだろと言うしかないね
845 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:32:34 ID:HabAm56l.net] 実務上はどうです? バッチの方が情報多いからいいんですか?
846 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:04:50.01 ID:mm84GRB0.net] >>809 どういう現場か知らないけど Widn7 SP1 PSv2 縛り なんて現場でPS書きたいとか思わないね。 使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。
847 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:27:53 ID:QZ+HyrOs.net] シコシコかくのよ
848 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:11:19 ID:JNM2fzED.net] PSでできること=C#でできることだからバッチとは全然できることが違うよ PSv2でも十分バッチとは天地の差がある
849 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:22:36 ID:5eIQQTQm.net] 元の質問が、「バッチでやるような処理でも」なんだけどな ちゃんと読んでるか?
850 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:24:38 ID:Gm6SBE/O.net] >>809 情報量ならPowerShellの方が上だし TechnetフォーラムならPowerShellのカテゴリーあるし ポケットリファレンスの著者である牟田口大介まで出没している ストアアプリのインストールとかはPowerShell必須だし バッチのみじゃ書けない物も割と多い 処理の内容は忘れたけどバッチでやれた事を PowerShellで書いたらキー入力を要求されて かえってバッチの方が良かった場合もあるけど そんなパターンは圧倒的に少ないと思う でもウチの場合、PowerShell使いがいないから というのが最大の理由で実務はバッチだらけ 良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき 個人の感想ならばPowerShellって バージョンが上がって非互換が出そうなので避けたい
851 名前:デフォルトの名無しさん [2020/06/04(木) 09:41:35.56 ID:Di3Z81qX.net] 9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ 意識していれば、バッチファイルの利用は難しくないと思う。 VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ 気をつけていれば概ね大丈夫だと思う。 それらに比べてPowerShellは、個人的にはハードルが極めて高い。
852 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:05:12.56 ID:iofqxoab.net] >>813 当然「バッチでやるような処理でも」PSなら十二分にこなせるよ このスレで話題になるような変なクセや制限もないしね
853 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:12:12.70 ID:iofqxoab.net] >>814 PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ
854 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:16:33 ID:efimIni8.net] BATの典型的なものとしては シーケンシャルに ・外部アプリ呼び出し ・ファイルコピーや移動 ・メッセージ表示 であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる
855 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 21:18:27 ID:U7KCPoET.net] PSの話したいなら該当スレへ ここでするのはスレチ
856 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 09:26:58 ID:YNSaAEsR.net] バッチファイル内で、複数の文字列の一部だけを羅列して、それをまとめて補完したものを変数に入れたい 具体的には set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat %LOG%\newsplus\*.dat ... のように指定するのではなく setlocal enabledelayed... for %%f in (tech prog win
857 名前: newsplus) do ( set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat ) のようにして、増減や修正を簡単に出来るようにしたい したいんだけど、なんかうまく動いてくれない 何かヒントもらえますか? [] [ここ壊れてます]
858 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:14:13 ID:YNSaAEsR.net] 自己解決 どうやらこんな感じで動きそう for %%f in (tech prog win newsplus) do ( call :APPEND %%f ) :APPEND set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat goto :EOF
859 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:33:35 ID:xkF+o6Lc.net] >>820 setlocal enabledelayedexpansion for %%f in (tech prog win newsplus) do ( set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat ) じゃダメなの?
860 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:53:35.34 ID:YNSaAEsR.net] あれ?出来ますね 実は!で囲むのもやってみた(つもりだった)んだけど (たぶん、どっか別のちょっとしたところでミスしてて) その時はうまく動かなかったんですね 失礼しました
861 名前:810 mailto:sage [2020/06/06(土) 00:36:10 ID:ZNTMwsEj.net] >>817 業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。 PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。 core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。 また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。 おまけにバッチとWSHはもう仕様変更が無いという強みがある。 等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。
862 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 07:37:38.68 ID:xQo5RGeQ.net] 長々と更新してもcmd変わらず放置 不具合あればPS使えということか バッチに未来は無い
863 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:59:44.80 ID:Phlj4K/L.net] cmdはもう更新しないってアナウンス出てなかったっけ?
864 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:16:29.17 ID:aAgqnyde.net] バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし 現状維持でこのまま使えたらそれでいいよ
865 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 08:05:01.57 ID:Nip9LUw0.net] 教えてください。 引数以外でショートカットの情報をバッチに渡すことはできますか? バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、 ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
866 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:09:40.34 ID:Rvue1P4U.net] ショートカットって何の?起動したバッチファイルのもの? ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな
867 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:41:39.28 ID:Nip9LUw0.net] >>829 やっぱり無理そうですね。 ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、 %0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。 何か方法ないのかなと思い、、あきらめます。 ご回答ありがとうございます。
868 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:24:19.06 ID:2FaHAA2B.net] ショートカットのプロパティで作業フォルダを弄ればいいだろ。 リンク先のバッチで%cd%参照。 ファイル名なんてリンク先に合わせりゃいいだろ。
869 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:26:00.19 ID:Q6c7IGAp.net] >>830 もしショートカットファイルから元のファイル名を取得したいってことなら wmicコマンドとか使えば良いんじゃない? https://stac
870 名前:koverflow.com/a/29650022 [] [ここ壊れてます]
871 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:45:22.44 ID:2FaHAA2B.net] プロパティのリンク先に自分のフルパスを追加してもいい リンク先のバッチで%1参照。
872 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:14:20.27 ID:Nip9LUw0.net] >>831 仰る通り。 それがメンドーだな、と思っただけです。 プロパティ弄らずにファイル名変更だけで挙動変えようかと、、、
873 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:15:45.60 ID:Nip9LUw0.net] >>832 そういうの、いろいろありますね。 VBSとかPSとか。 後者をSendToに入れてフォルダ内調査に使ったりしてます。
874 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:16:13.25 ID:Rvue1P4U.net] ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの? ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど
875 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:17:49.77 ID:Nip9LUw0.net] >>833 プロパティ弄るなら、素直に引数指定すれば良さそうです。 みなさんご意見ありがとうございます。
876 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:18:03.34 ID:2FaHAA2B.net] 作業フォルダを空欄にするだけなんだけど
877 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:20:20.62 ID:Nip9LUw0.net] >>836 ショートカットを別フォルダにコピーするだけで、そのショートカットの親フォルダをバッチに渡すということをしたかったです。 ただのめんどくさがりです。すみません。
878 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:25:13.85 ID:Nip9LUw0.net] ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました。 ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。 みなさんおつきあい頂きありがとうございます。
879 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:32:21.09 ID:Rvue1P4U.net] >>839 それなら >>838 で可能 作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる
880 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:47:38 ID:zWNqxiy9.net] 別フォルダにコピーする時点で親フォルダ分かってるんじゃない?
881 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 19:57:43.39 ID:Nip9LUw0.net] >>841 おおお、なるほど! StartInを指定しなければ、CurrentDirectoryは移動しないのか。 リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。 感謝!! VBAのApplication.Callerみたいなのが書ければいいんですけどね。
882 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:09:16.72 ID:2FaHAA2B.net] 作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな。 あと、管理者権限で実行したらC:\WINDOWS\system32になったりする
883 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:15:00.02 ID:Nip9LUw0.net] >>844 そうなりますね。気をつけます。
884 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 21:58:02.09 ID:Nip9LUw0.net] すみません。もう1つ質問です。 バッチ自身を最小化して起動するときどうされてますか? これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。 サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。 普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、 うまい方法があれば教えてください。
885 名前:デフォルトの名無しさん [2020/06/15(月) 14:19:29.38 ID:YYrFY+5A.net] 無い
886 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:14:00.08 ID:X3dRtIQ2.net] >>847 了解!
887 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:21:32.94 ID:bzzr0fEY.net] start
888 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 21:31:09.57 ID:xZsc1Mf0.net] pause
889 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 06:44:47 ID:zfRgO9so.net] PowerShell なら、 # ショートカットファイルのフルパス $fn = "フルパス" # ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る $link = $wsh.CreateShortcut( $fn ) # 画面に表示する Write-Host "$( $fn )`
890 名前:nTargetFile: $( $link.TargetPath )" [] [ここ壊れてます]
891 名前:851 mailto:sage [2020/06/16(火) 06:47:46 ID:zfRgO9so.net] >>851 修正 一番上に、これを入れて $wsh = New-Object -ComObject WScript.Shell
892 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 09:13:19.74 ID:n71ojSL1.net] wsh呼び出すならvbsでも使えばいいわけで…
893 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 15:49:55.53 ID:0FicG8jZ.net] リンク先バッチ本体をコピーしたらあかんの?
894 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 16:06:26.98 ID:0FicG8jZ.net] 動的に変化するのか?
895 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:29:49.48 ID:woSalLPH.net] >>851 あれ、まだ続いてましたね。 えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。 結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、 .Lnkのファイル名を取得する手段はない、と認識しました。 もしかして、PowerShellなら取得できますか?
896 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:38:20.68 ID:woSalLPH.net] >>854 Batchを複製すればできますね。 でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。 ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。 (現時点、これで代用してます) でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。 で、バッチを最小化で生起動する方法は、、無い!という結論です。 というところで諦めています。
897 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:14:22.53 ID:yH2E1+y3.net] おまえ要領を得ないって良く言われるだろ 何を最小化したいの?コンソール画面?バッチから起動したアプリ? アプリ起動にバッチを介するようになって困っているようだけど コンソールはすぐ消えるから大して困らんでしょ その一瞬も困るってこと? コンソールならバッチへのショートカットのプロパティに[実行時の大きさ] アプリならstart /min そのバッチを貼れない理由でもあるの?
898 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:24:30.52 ID:C/0BZ8DU.net] そんなへんなことするようなものは俺なら要らんと言うな 説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う
899 名前:デフォルトの名無しさん [2020/06/16(火) 23:48:59.36 ID:zfRgO9so.net] 漏れなんか、ダブルクリックで、Ruby スクリプトを実行するために、 test.vbs に、起動部分だけを書いてる CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
900 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 02:23:38.88 ID:1C8hVY+b.net] もうやめろ。くだらねえ
901 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 03:27:41.75 ID:pABU+G65.net] だから結論はでた、諦めてると言ってるだろ。 返してくれた方がいたので返答しただけ。 ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。 はい、本件Close。 有用な情報提供いただいた皆さんありがとう。
902 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 07:10:17.14 ID:jbUYdqRV.net] よくわからんけど start /b /min を使うのではだめなのかしら と独り言
903 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 08:16:21.96 ID:tu0J1xQb.net] >>863 /bスイッチって何でしたっけ?
904 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 03:29:25.23 ID:00is865e.net] >>858 >その一瞬も困るってこと? 悪いことしたい時に、それでは困るよね?
905 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:09:08.15 ID:EpKOfb9E.net] >>865 単なる気分の問題 本件はクローズ。皆さんありがとうね
906 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:00:22.59 ID:L9lBZl+g.net] そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな
907 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:51:24.52 ID:sqKtSFf3.net] ここまでの流れで誰も配布するなんて話してないのにお前
908 名前:は何を言ってるんだ? 866の好きにさせとけよ [] [ここ壊れてます]
909 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:53:59.19 ID:EpKOfb9E.net] >>868 はい、自分用です。ご安心を。 中身もつまらない小物ツールですので。 技術的な情報が知りたかっただけです。 また教えてください。
910 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:05:08.15 ID:HgOFevSP.net] クローズしたそうだが コンソール画面を見たくないのなら レイアウトの位置を右下に詰めろ。 ほとんど見えなくなるぞ
911 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:27:18.52 ID:TPV7TWbz.net] 殆どじゃダメなんだよ 神経質な奴に見つけられてしまう
912 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:33:46 ID:HgOFevSP.net] お前、質問者か?
913 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 03:17:24.40 ID:7A38Sw4m.net] テキストファイルから空行を除く方法 findstr /R . ただし空白やタブのある空行は失敗
914 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:11:07.46 ID:HgOFevSP.net] >>873 タブやスペースだけの行をスキップするには findstr /r /c:"[^ ]" ^と]の間にタブとスペース入力 バッチではエディタでタブ入力できるが コマンドプロンプトでタブ入力するには cmd /f:off で
915 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:34:11.61 ID:HgOFevSP.net] for〜do〜echoでやった方がいいかも
916 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:08:23.94 ID:dZCme2QN.net] テキストファイルに入ってる文字列を 一行ごとに読み込んで フォルダを作るバッチをつくったのですが 半角スペースの文字列が分割されてしまいます これって対応策ありますか?
917 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:23:13.74 ID:7ozUCHmg.net] >>876 for /f "tokens=*" %%i in (data.txt) do md "%%~i"
918 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 21:21:38 ID:elMokmc1.net] >>877 できたサンクス 助かった
919 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 15:01:18.03 ID:SwuJ9TNP.net] ファイル名全角英字の大文字小文字を同じとみなしていた A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった Aaは全角英字 芸が細かい、いいか悪いかは別として
920 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:03:57 ID:PSeL/c0z.net] ワイルドカードの ? の仕様がイマイチ分からない abc と abc1 のファイルがあったとして >dir /b abc? abc abc1 >dir /b ?abc ファイルが見つかりません >dir /b a?bc ファイルが見つかりません なぜ見つからないのか 1ないし0個の文字じゃないのか
921 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:07:42 ID:/pl8PJcc.net] ワイルドカードで?は任意の1文字を示す
922 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:14:29.14 ID:PSeL/c0z.net] では abc? で abc が一致するのはなぜ
923 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:19:02.81 ID:/pl8PJcc.net] abc.でマッチするからだと思う
924 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:21:41.87 ID:PSeL/c0z.net] なるほど。ありがとう
925 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:28:18.05 ID:PSeL/c0z.net] abc?? や abc??? でも一致するようだ
926 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:49:40.78 ID:tIigavUn.net] https://www.pg-fl.jp/program/dos/doscmd/str_wildcard.htm kayuitoko.blog129.fc2.com/blog-entry-2.html
927 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:59:31.31 ID:PSeL/c0z.net] abc??.?? とかも一致するね。たぶん仕様というよりバグ
928 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 21:39:19 ID:clO9Gt1K.net] ピリオドが絡むとワイルドカードはおかしな動きするよ。 filename_yyyy.mm.dd.dat みたいなもんが dir *_????.??.??.dat で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。 filename_yyyy-mm-dd.dat として dir *_????-??-??.dat だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。
929 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:22:43.96 ID:sbIkpZ+y.net] ワイルドカードは色々とおかしい >echo > "abc" & echo > "
930 名前: abc" >for %i in ("abc*") do @echo "%i" "abc" " abc" [] [ここ壊れてます]
931 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:57:25.88 ID:9hqgfVHi.net] そっちはたぶん8.3形式が引っかかってるんだろう
932 名前:デフォルトの名無しさん [2020/07/04(土) 22:02:55.18 ID:r0U5W+Xd.net] PC初心者です。 初めてバッチファイルの作成にチャレンジしています。 ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。 コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。 これはなぜでしょうか?回避方法はありますか?
933 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:37:12.45 ID:KIcU78VY.net] >>891 ggrks
934 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:39:29.92 ID:QUXtQ3do.net] たぶん、A ファイルがあって、それを上書きする時に、 安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、 正常に上書きした後に、Recovery内のA を削除している ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう
935 名前:891 mailto:sage [2020/07/05(日) 11:17:14.37 ID:eLIuBas1.net] >>893 ありがとうございます。 バックアップ自体は問題なさそうなので、このままで使ってみようと思います。
936 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:06:46.22 ID:1amJ61U+.net] >>893 >>894 コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの。 ドライブを丸ごと robocopy すると強制的に SH 属性が付くから、最後に attrib -S -H してやる必要があるし、>>894 はそれをしてると思う。 そしたら「Recovery」が見えるようになった、というだけの話でしょ…これ。 コピー元のルートディレクトリに行って「dir /a」して確認してみ?
937 名前:891 mailto:sage [2020/07/07(火) 00:32:35.56 ID:TndHy5rX.net] >>895 「dir /a」して確認してみたところ、仰る通りでした!「Recovery」フォルダは不要なので削除しました。 有難うございました!
938 名前:デフォルトの名無しさん [2020/07/08(水) 04:28:57.30 ID:lPT19RKJ.net] 超初歩的な質問いいですか? @https://i.imgur.com/hyYJbJE.png Ahttps://i.imgur.com/REf3PXQ.png Bhttps://i.imgur.com/UIqO0ye.png @のCというフォルダを中にある1.txt 2.txtごとAにコピーしてBのようにしたい時、どう入力したらいいですか? すでにBのような状態にある時もコピーして上書きしたいのですが ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので
939 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 04:57:01.58 ID:xPuqy2ih.net] >>897 せめて、何を試してうまく行かなかった、とか試行錯誤の具体的な 過程があれば説明、答えを教えてくれるひとがいるかも
940 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:13:48.40 ID:H59ZusVp.net] >>897 普通にcopy使えよ
941 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:29:09.34 ID:plYM8yLW.net] >>897 要件はそれだけか? メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり それはコピー対象/対象外だとか無いの? \Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること mkdir C\Users\a\Desktop\B\V\C copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C xcopyを使うなら xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C 又は xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
942 名前:デフォルトの名無しさん [2020/07/08(水) 05:44:34.05 ID:lPT19RKJ.net] >>900 どうもありがとうございました。 自分でも色々やって試しててうまくいかず質問したのですが、 原
943 名前:が保存した文字コードがUTF-8だったためでした。 ANSIに変えたらうまくいきました。 [] [ここ壊れてます]
944 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 11:29:53 ID:Z8A6jaoN.net] xcopy よりは、robocopy を使った方が良いのでは? xcopyは、あまり見ない
945 名前:デフォルトの名無しさん [2020/07/08(水) 12:24:18.71 ID:lp5P2pBO.net] dosで使えなくなるだろ
946 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:46:00.57 ID:Lb+zauke.net] たしかに、DOSは、Xcopyまでだったか。 pureDOSには、robocopyはないのだな。
947 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:56:46.06 ID:plYM8yLW.net] robocopyは絶望的に遅い 複雑な条件がないのならxcopyがいい
948 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 15:01:55.81 ID:z330e5aM.net] robocopyは、ミラーリングで使用したときに、 消される側にフォルダのシンボリックリンクがあると、 リンク先実体フォルダ内のファイルごと消されるというバグが有る。 /xjd /xjf /xj /sl 全部ダメ。 怖くて使えない。
949 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 18:21:45.08 ID:ebRsk5Wi.net] ま?
950 名前:895 mailto:sage [2020/07/08(水) 19:29:53.78 ID:fFkGRU4d.net] >>896 空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。 (バグやディスク容量の関係) https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html だから丸っきり不要ってわけでもないのだよ。
951 名前:デフォルトの名無しさん [2020/07/09(木) 01:19:26.67 ID:oG8bZA2s.net] itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど (ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな? もちろん対象フォルダには移動している
952 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 02:32:11.02 ID:zMPqHoYq.net] >>909 先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
953 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 04:53:54.78 ID:gEWbrPAM.net] Ruby で作った。 ただし、DryRun なので実際には実行されません! require 'fileutils' # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く glob_pattern = "C:/Users/Owner/Documents/*.txt" num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数 Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ処理する .sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする .reverse # 更新時刻の新しい順へ、逆転 .drop( num ) # 新しいものから、num個を処理しない .each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除 表示 rm C:/Users/Owner/Documents/a.txt rm C:/Users/Owner/Documents/b.txt
954 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:30:12.62 ID:o2t2WZIU.net] rubyなんて論外、PowerShellですらギリアウト ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合 カレントフォルダの *.txt の最新3個以外をリストアップするには gi *.txt | sort LastWriteTime -Descending | select -Skip 3 削除までやるなら gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri エイリアスを使わずに書くと Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
955 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:31:35.37 ID:o2t2WZIU.net] ああ LastAccessTimeじゃくてLastWriteTime
956 名前:デフォルトの名無しさん [2020/07/09(木) 13:30:39 ID:oG8bZA2s.net] >>910 初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている
957 名前:事が原因でした そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか? [] [ここ壊れてます]
958 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 16:17:08 ID:t1UM8kjV.net] >>914 ファイル名に相当する箇所をクオート
959 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:27:24.24 ID:pJbYwVEp.net] https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1 setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
960 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:51:32 ID:73kyB1S/.net] Arithmetic
961 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 15:46:16.46 ID:nRIpdjFe.net] if 感染者数==0 ( goto campaign ) else ( goto campaign )
962 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 21:08:21.69 ID:NpGOzuTH.net] w
963 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 22:58:28.42 ID:SqApoBlS.net] >>916 MSの英語フォーラムとか 英語版StackOverFlowとか Redditとか で尋ねたら?英語で。 本当に知りたいなら英語圏に聞け。英語圏に。
964 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:48:35.91 ID:vc+VU4Sj.net] >>917 が教えてくれてるよ
965 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:53:31.66 ID:SqApoBlS.net] >>921 arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
966 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 00:26:22.36 ID:3qBZIgLF.net] /a は 単純に answer かな
967 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 05:41:06.12 ID:smyagw08.net] >>923 まじで? いや普通にarithmeticでしょw
968 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 11:47:24.17 ID:lU9BoPI+.net] 以降あいうえお作文スレ
969 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 13:33:25.11 ID:d6//+ANU.net] Arithmeticって+-*/のことじゃないの?
970 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 00:25:33.43 ID:C6Q8EyYV.net] +とか-はarithmetic operatorだね
971 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 01:59:17.03 ID:6qVTTMhl.net] 大体は理想通りに出来たのですが時々不要なpathをremで無効にするとstartコマンドがなぜかC:\hoge\を開いてしまうので回避できないでしょうか? バッチ初心者なので汚いのはご容赦下さい SET TARGET_EXE1=C:\hoge\hoge.bat SET TARGET_EXE2=C:\hoge\huge.lnk rem SET TARGET_EXE3=C:\hoge\hege.exe for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%") timeout /t 8 > NUL exit 0 :F_NM echo %~nx1 START "" %1 goto :EOF
972 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 05:56:42.11 ID:mgWYGhz7.net] if not "%~1"=="" START "" %1
973 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:09:21.26 ID:ddPranTH.net] if exist "%~1" start "" "%~1"
974 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:50:03.50 ID:ddPranTH.net] for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")
975 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:36:51.45 ID:4sfyyT7O.net] >>929 ->>931 ありがとうございます not exist definedの違いなど勉強して盛り込んでみます
976 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:31:48 ID:GUFQRDdz.net] >>929 すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
977 名前:デフォルトの名無しさん [2020/07/18(土) 15:40:41.02 ID:VVrReUQE.net] start /? 最初のは "タイトル"
978 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 19:10:23.40 ID:mgWYGhz7.net] >>933 %1の引用符なしが%~1 だから"%~1"は二重がけではない
979 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:08:37.75 ID:xxg3trOa.net] "" START "" に見えたってことなら if not "%~1"=="" ( START "" %1 ) こうね
980 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:01:19.79 ID:nPf
] [ここ壊れてます]
981 名前:Uu10f.net mailto: >>933 ちなみに"start"でもダメ 一般的に内部コマンドは引用符で囲むとエラーになる 昔はstartが外部コマンドだった時もあったが [] [ここ壊れてます]
982 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:15:51.03 ID:nmSNkapE.net] >>936 完全にこれでしたすみません
983 名前:デフォルトの名無しさん mailto:sage [2020/07/31(金) 20:28:20.67 ID:uhGaPqk6.net] 面白い書き方見付けた c:\APP\DoeView>popd c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail] 2020/07/31 (金)20:14:34.70 [pushd:ok] c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail] 2020/07/31 (金)20:14:38.48 [pushd:fail]
984 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 00:13:59.61 ID:oGghCVi0.net] >>939 解説お願いします
985 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 01:53:16.42 ID:mxUlZpQQ.net] 他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。 :INPUT set /p INP= if "%INP%"=="コマンド1" ( 処理1 echo 結果1 goto INPUT) if "%INP%"=="コマンド2" ( 処理2 echo 結果2 goto INPUT) … goto INPUT こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。 何か対策は無いでしょうか?
986 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:07:29.27 ID:hnL660kY.net] 他のとやらが標準出力読めるなら set /p INP=inputok 読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
987 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 10:06:48.10 ID:KdkXblI6.net] >>939 なるほど set /p<nul=%date%%time% [pushd: と @pushd doeview >nul 2>&1 && echo ok]||echo fail] を & でつないだという訳か。で前半を普通の順番に書き直すと set /p =%date%%time% [pushd:<nul で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。 後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
988 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 15:48:10.34 ID:mxUlZpQQ.net] >>942 やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません… やっぱ無理ですかね…
989 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:20:21.81 ID:hnL660kY.net] copy nul $tmp.txt hoge.exe >>$tmp.txt for /f "delims=" %%a in ($tmp.txt) do ( if "%%a"=="コマンド1" (処理1 &echo 結果1) if "%%a"=="コマンド2" (処理2 &echo 結果2) … ) こういう風に一旦txtに書き出しじゃダメなん?
990 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:49:00.41 ID:y/Re9bvj.net] >>944 実行速度を気にしないゆっくりでいいのなら、 tasklist に実行するプログラムがあれば待機する 実行するプログラムの終了コード(errorlevel)の癖がわかっているなら errorlevelで終わったかそうかわかるかも
991 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:16:08 ID:mxUlZpQQ.net] どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。 将棋所 shogidokoro.starfree.jp/index.html USIプロトコル shogidokoro.starfree.jp/usi.html USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。 現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、 対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。 デバッグウィンドウからコマンドを送れば一応動きますが… >>945 一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません… 将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、 とかも考えたんですが、結局その2つのやり取りをどう
992 名前:キれば良いのか… [] [ここ壊れてます]
993 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:01:49.63 ID:SCuZm8dn.net] >エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う 制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも 思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
994 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:12:10.36 ID:SCuZm8dn.net] > setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない あーこの時点で無理なら厳しいね バッファ用としてのプログラムを間に挟まないと で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
995 名前:947 mailto:sage [2020/08/02(日) 15:10:30.75 ID:pqbO4ExB.net] >>949 やっぱそうですか… 残念ですが諦めます ありがとうございました
996 名前:デフォルトの名無しさん [2020/08/07(金) 17:37:19.06 ID:ztGuRGFM.net] フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです これを フォルダ1 ├ファイル1 ├ファイル2 フォルダ2 ├ファイル1 ├ファイル2 こうしたいです ファイル1 ├ファイル1 ├ファイル2 ファイル1 ├ファイル1 ├ファイル2 フォルダ名が重複した場合の処理も必要かもしれないです バッチは読みにくすぎですね
997 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:11:16.88 ID:wnzPeWR5.net] >>951 そもそもツリー表現が変だと思う。 ├フォルダ1 │├ファイル1 │└ファイル2 └フォルダ2 ├ファイル1 └ファイル2 tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
998 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:17:23 ID:5wWI/sIC.net] >>951 エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど それを考慮する必要あるの?
999 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:00:00.04 ID:c43C7xo+.net] for /r %%i in (.)で下位フォルダ名取得 そのフォルダ内の最初のファイル名を取得(ソート指定) 対象フォルダ名の変更 もしやるならvbs噛ませると思う
1000 名前:デフォルトの名無しさん [2020/08/08(土) 05:43:20.34 ID:jNP2OM4q.net] >>953 とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
1001 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:06:33.19 ID:ulitZ7VR.net] >>955 だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話 https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
1002 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:25:04.94 ID:HPaGwZBp.net] どうでも良いことに拘るアホ
1003 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:01:08.32 ID:nLoi7MqI.net] どうでもいいと言うならテメーがどっちかに決めろや どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
1004 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:25:59.89 ID:XY4Xe7zO.net] ところで、質問者本人は、どちらを・・・・。
1005 名前:デフォルトの名無しさん [2020/08/08(土) 09:32:21.16 ID:d2hZRkL/.net] 仕様を全て決めないと取り掛かれないマヌケ多すぎ 無能は本筋から外れたところで発狂してろ
1006 名前:デフォルトの名無しさん [2020/08/08(土) 09:59:17.57 ID:jNP2OM4q.net] >>956 では今回はエクスプローラ側の並び順がいいです
1007 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 10:22:17.59 ID:cJmgrNkw.net] >>960 吠えるしかできない間抜け乙w >>961 ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理
1008 名前: PowerShellかC#とかでやった方がいい [] [ここ壊れてます]
1009 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 11:11:14 ID:6XUmF/b8.net] とりあえずこんな感じ?(先頭はdir順) if "%1" neq "" pushd "%~1" for /d %%i in (*) do call :sub "%%~i" popd goto :eof :sub for /f "tokens=*" %%j in ('dir /b /on %1') do ( call :rename %1 "%%~j" goto :eof ) goto :eof :rename ren %1 %2 if errorlevel 0 call :rename-retry %1 %2 goto :eof :rename-retry rem ---todo--- goto :eof
1010 名前:デフォルトの名無しさん [2020/08/08(土) 11:14:22 ID:jNP2OM4q.net] >>962 ではcmdでいいです あるいはpython環境のほうが楽ですか? >>963 cmdのコードは理解が難しいですね、、、
1011 名前:デフォルトの名無しさん [2020/08/08(土) 12:00:51 ID:jNP2OM4q.net] globでやってみます
1012 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 12:16:11.89 ID:XwBZfJ1v.net] リネーム処理とかはもうPSの方がいいんじゃない? @echo off &setlocal enabledelayedexpansion for /f "delims=" %%G in ('dir /ad /b') do ( set N= for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH" if defined N ( if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else ( set dt=!date:~0,10!!time: =0! set dt=!dt:/=! set dt=!dt::=! ren "%%~G" "!N!_!dt!" ) ) ) pause &exit /b
1013 名前:デフォルトの名無しさん [2020/08/08(土) 14:01:14.15 ID:jNP2OM4q.net] pythonでは向いてないですか
1014 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:20:59.87 ID:IdUt1ux3.net] pythonはスレチ
1015 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:22:12.94 ID:0U8ymD0p.net] >>967 ならPythonスレで聞けよ…
1016 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:06.79 ID:Uh3gedSc.net] dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから wshでリネーム用のバッチファイルを作る方が楽かな wshではテキストを一括読みして変数に入れて テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく 下位ディレクトリや同一フォルダ名になるときの判定などもしやすい もし失敗しても、原因を見つけやすいしリカバリーもしやすい
1017 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 04:55:36 ID:z2n3MQIn.net] 仕様がないと取りかかれないと言うが 発注者が仕様を曖昧にしておくほうが罪深いだろ 要件定義が甘くて泣きをみるのはいつも現場だ
1018 名前:デフォルトの名無しさん [2020/08/09(日) 05:42:25.80 ID:KFfdng53.net] Ruby で、チェックツールを作った 隠しファイル・ディレクトリは、どう扱うのか? ファイル名に、. がある場合に、どうするのか? require 'pathname' p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" ) folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ p folders.length, folders files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ # nil は、直下にファイルが存在しない、ディレクトリ nil_cnt = files.count( &:nil? ) p files.length, nil_cnt, files # compact で、nil の要素を省く hash = files.compact.each_with_object( { } ) do |file, hash| filename = file.basename.to_s # ファイル名を、ハッシュに追加していく if hash.has_key? filename # ハッシュに、既に追加されていれば hash[ filename ] += 1 else hash[ filename ] = 1 end end # 2 以上のもの、つまり、同じファイル名になったものを表示する p hash, hash.select { |key, val| val >= 2 }
1019 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:16:13.05 ID:wnSURbps.net] そろそろ出てくるかと思ってた
1020 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:38:11.28 ID:fObB6/0g.net] 予
1021 名前:ェ通り? [] [ここ壊れてます]
1022 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 08:51:35.00 ID:AwQ8dIl5.net] >>971 それはSEが無能なだけ 一から十まで決定しなくても開発は進められる
1023 名前:デフォルトの名無しさん [2020/08/09(日) 16:47:47.63 ID:0zxLTv88.net] 典型的な無能の発言だな
1024 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 23:22:34.78 ID:TBMXuXvF.net] >>972 オワコンRubyジジイが出てきたか 困るよね、こういう老害 >>975 進められるけど手戻りして予算オーバーするわけね お前が無能
1025 名前:デフォルトの名無しさん [2020/08/10(月) 01:55:02.34 ID:9+h/1Osf.net] >>977 > 進められるけど手戻りして予算オーバーする マヌケが要件定義を担当するとそうなるねw バカな開発チームだと、なぜか「ユーザーが悪い」という認識になるww
1026 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 03:38:30.58 ID:1F6bB0mG.net] あいまいなのはユーザーが自分でも要求を把握しきっていないためだから あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
1027 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 04:21:21.96 ID:mFEy/HZR.net] > あいまいなのはユーザーが自分でも要求を把握しきっていないため ブレない軸を導き出せないような無能SEは多いよね ある程度ブレてもダメージが少ないように開発するのが主流ですよ
1028 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 11:53:14.80 ID:ZLJuvAm6.net] ある程度ブレても、いいように開発できればいいのですけれどもね。 時折、ニュースでも、開発できなかったということで、クライアント側と、 メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
1029 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 21:32:34 ID:+SLQPb+P.net] >>981 それは折衝役がシステム開発に疎いだけ 営業トークだけの人間が事態を悪化させる
1030 名前:デフォルトの名無しさん [2020/08/13(木) 21:47:50.59 ID:5FyzI8Jm.net] Soft\Soft.ini 12 LastCheck = Mon Aug 3 00:00:00 2020 13 LastUpdate = Mon Aug 3 00:00:00 2020 Soft\Plugins\update.txt 1 Update time: Wed Aug 12 23:59:59 2020 Soft.iniの12行目と13行目「Mon 〜 2020」を update.txtの1行目「Wed 〜 2020」から置換して 12 LastCheck = Wed Aug 12 23:59:59 2020 13 LastUpdate = Wed Aug 12 23:59:59 2020 のように上書きしたいのですが batファイルでどのように書けば出来ますか?
1031 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:00:40.82 ID:E452L2zK.net] >>983 情報不足。 ・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。 ・update の日付が更新されなかった場合はどうするの? ・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ? 書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。 どこかの新入社員だとか学生の課題っぽいな…
1032 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:32:48.63 ID:SCMnTycc.net] Ruby では、これで設定できる require 'inifile' str = "Wed Aug 12 23:59:59 2020" ini = IniFile.new( :filename => "test.ini" ) ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str } ini.write( ) # save 結果 [abc] LastCheck = Wed Aug 12 23:59:59 2020 LastUpdate = Wed Aug 12 23:59:59 2020
1033 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:14:47.97 ID:oJspCYOK.net] イヤミでは、なく止したら? <Ruby
1034 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:32:16.73 ID:cdtRNbgQ.net] Swiss File Knife
1035 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:39:33.54 ID:dCe/n24a.net] ・
1036 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 14:59:12.49 ID:uGqrrAzw.net] >>983 @echo off set src=Plugins\update.txt set ini=Soft.ini for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H" for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H" REM 比較するならここで処理 REM echo "%VER_UT%" "%VER_IT%" ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b) for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do ( if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT% ) else ( if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT% ) else ( >>"%ini%" echo %%G=%%H ) ) ) REM 空行消したくなければ findstrで読んで行番号を表示させる
1037 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 21:06:33 ID:II+YlR7/.net] ・
1038 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:02:35.58 ID:TmzvbeJo.net] >>995 ウンコみたいにダサいコードをよく晒せるな。 生きてて楽しい?
1039 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:14:12.37 ID:B6QaDwta.net] 未来予知乙 生きてる価値もないなw
1040 名前:デフォルトの名無しさん [2020/08/14(金) 22:43:27 ID:9FGl+Ien.net] 低能Ruby厨か
1041 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:06:43.67 ID:TmzvbeJo.net] リダイレクトカードオープン! >>991 から >>995 へのアンカーは >>985 へリダイレクトされる! が、Ruby爺は人格障害者だった! 精神的ダメージを受けていない! Ruby爺がVZ爺を召喚しようとしている! が、自分自身だったので召喚できない! Ruby爺がダサいコードを唱え始めた! 似非プログラマーは発狂した! 歴戦のプログラマーは何も感じていない! 歴戦のプログラマーの攻撃! Ruby爺は5のダメージ! 歴戦のプログラマーはRuby爺をやっつけた! 経験値を0exp、ゴールドを0G 手に入れた! 「何だよ無職ニートの爺かよ…」と歴戦のプログラマーは思った。
1042 名前:デフォルトの名無しさん [2020/08/14(金) 23:10:45 ID:SCMnTycc.net] Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?
1043 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:35:08.04 ID:LY+T9Pmp.net] EDLIN
1044 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 00:03:00.44 ID:fUIncIgN.net] ・
1045 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 01:45:30.34 ID:t8slxubu.net] 次スレは?
1046 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 02:14:16.82 ID:RWxrHj8y.net] https://www.vector.co.jp/vpack/filearea/dos/util/bat/
1047 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 06:59:18.06 ID:R7NunwzB.net] 質問いいでしょうか
1048 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 632日 16時間 7分 11秒
1049 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています