_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/


[.cmd] バッチファイルスクリプト %13 [.bat]
https://mevius.5ch.net/test/read.cgi/tech/1542779527/l50
[.cmd] バッチファイルスクリプト %13 [.bat]
1002コメント_363KB
全部_1-100_最新50
*スマホ版*_*掲示板に戻る*_*ULA版*
レス数が1000を超えています. これ以上書き込みはできません.

  1 :デフォルトの名無しさん:2018/11/21(水) 14:52:07.84 ID:v84I4o+L
  拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる.
  質問, テクニック(JScript, Perl等の埋め込みなど含む), 関連情報のためのスレです.
  [*] 何でも無理矢理バッチでやろうとせず, WSH等の使用も検討しましょう.
  前スレ.
  [.cmd] バッチファイルスクリプト %11 [.bat]
  http://echo.5ch.net/test/read.cgi/tech/1424858999/
  [.cmd] バッチファイルスクリプト %12 [.bat]
  https://mevius.5ch.net/test/read.cgi/tech/1489207631/
  それ以前の過去スレ.
  %10 http://peace.5ch.net/test/read.cgi/tech/1374205515/
  %9 http://toro.5ch.net/test/read.cgi/tech/1335015478/
  %8 http://toro.5ch.net/test/read.cgi/tech/1315844420/
  %7 http://hibari.5ch.net/test/read.cgi/tech/1298873550/
  %6 http://hibari.5ch.net/test/read.cgi/tech/1277465356/
  %5 http://pc12.5ch.net/test/read.cgi/tech/1242268171/
  %4 http://pc12.5ch.net/test/read.cgi/tech/1229955189/
  %3 http://pc11.5ch.net/test/read.cgi/tech/1217860043/
  %2 http://pc12.5ch.net/test/read.cgi/tech/1197881068/
  %1 http://pc11.5ch.net/test/read.cgi/tech/1178281991/

  2 :デフォルトの名無しさん:2018/11/21(水) 14:53:38.55 ID:v84I4o+L
  スレ作った.

  3 :デフォルトの名無しさん:2018/11/21(水) 15:10:24.99 ID:ROx7bOng
  >>1
  いちおつ.
  ところで, 最近, プロンプトの色が変わってしまったんだが直し方教えてください.
  くすんだ感じになってしまう.
  color 9f
  とか明るい色が顕著.
  自分で加えた変更の何が影響したのかわからず, 途方に暮れてます.

  4 :デフォルトの名無しさん:2018/11/21(水) 15:28:50.54 ID:0+i4JzOE
  タヒ.

  5 :デフォルトの名無しさん:2018/11/21(水) 15:34:12.06 ID:0TmpON8B
  >>1乙.
  テンプレ文だがもうWSHよりはPowershellじゃないのかしら?

  6 :デフォルトの名無しさん:2018/11/21(水) 15:54:50.45 ID:waeO4Jak
  powershellはここの板に別スレがあってここで取り扱う必用は無い.
  一方wshはもはや専用スレは無くこのスレに含めた形で残っている.

  7 :デフォルトの名無しさん:2018/11/21(水) 23:59:36.40 ID:VxDAgoaS
  >>3 自己レスです.
  レジストリの.
  HKEY_CURRENT_USER\Console にある ColorTableXX で指定された.
  色 00BBGGRR がソレだったので何かが変だった訳でもなく, 忠実に.
  この値を読んでいただけでした.
  黒をわざわざ 0c0c0c にしていたり, 全テーブル 00 から 15 まで.
  全て変更が入っていたので, いつの間に変更したのかという疑問が.
  残りますが・・・・・・.

  8 :デフォルトの名無しさん:2018/11/22(木) 05:37:11.56 ID:HUZaaTR+
  >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 :デフォルトの名無しさん:2018/11/22(木) 06:45:17.58 ID:y7NAvoby
  >>6
  > powershellはここの板に別スレがあってここで取り扱う必用は無い.
  別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な.
  PowerShell の話題が出たら誘導すればいいだけだし.
  > 一方wshはもはや専用スレは無くこのスレに含めた形で残っている.
  wshの専用スレがないのは需要がないからだろ.
  そんなものに対して使用を検討する必要なんてないと思うぞ.

  10 :デフォルトの名無しさん:2018/11/22(木) 07:28:54.55 ID:Q9Jr5DcP
  >>8
  デフォルト値ありがとうございます.
  実際にOSインストールしなおしての確認はしてないのですが.
  Win10_1809Oct_Japanese_x64.iso の install.wim の.
  install.wim\3\Users\Default\NTUSER.DAT
  ハイブファイルのロードをしてみると変化していた方の配色と一致してました.
  OSクリーンインストール後, しばらく変化に気づいていなかっただけ,
  という事のようです.
  少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー,
  だったのも加味して・・・・・・.
  スレ汚し失礼しました.

  11 :デフォルトの名無しさん:2018/11/22(木) 08:20:54.79 ID:HUZaaTR+
  俺も以前に経験あるが何で勝手に変わるのか未だに不明.
  デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど.

  12 :デフォルトの名無しさん:2018/11/23(金) 06:41:38.84 ID:Yr5PhtU+
  >>8 だが.
  俺も"HKCU\Console"消して起動したら.
  ColorTable00 が 0x0 から 0xc0c0c になったよ.
  今はこれがデフォルトなんだな.

  13 :デフォルトの名無しさん:2018/11/23(金) 07:03:12.22 ID:Yr5PhtU+
  dir | more でEnter押すと1行ずつ出てくるんだけど.
  前からこんな動作だったっけ?
  dir /p みたいにページごとにスクロールしないのか?
  ちなみにWin10Pro 1809 17763.107 だ.

  14 :デフォルトの名無しさん:2018/11/23(金) 07:31:03.82 ID:Yr5PhtU+
  すまんhelp見たら.
  <ret> 次の行を表示します.
  になってた.
  あとスレチだが gpg -d がエラー出る. . .

  15 :デフォルトの名無しさん:2018/11/23(金) 13:03:06.27 ID:H8vDP5fG
  このスレってテンプレに「 次スレは>>970踏んだ人が立てましょう 」とかないんだね.
  毎回同じ人が立ててるのかな?

  16 :デフォルトの名無しさん:2018/12/02(日) 11:33:28.29 ID:WVaKBjKU
  ffmpegで動画容量を減らしています.
  この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか.
  また, バッチファイルでなくとも他に良い方法などありましたらぜひお願いします.
  ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4
  ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4
  普段はこれを実行しています.

  17 :デフォルトの名無しさん:2018/12/02(日) 14:26:12.73 ID:uIlAasYL
  シェルスクリプト・PowerShell もあるけど,
  安全性のため, ダブルクリックでは動かない.
  ダブルクリックで動くのは, バッチファイルだけ.

  18 :デフォルトの名無しさん:2018/12/03(月) 10:52:45.51 ID:mYQmjn55
  >>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 :デフォルトの名無しさん:2018/12/04(火) 18:23:57.45 ID:YV7FMG5g
  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 :デフォルトの名無しさん:2018/12/04(火) 20:16:59.52 ID:Mme7W69z
  "C:\hoge.exe"というプログラムを再起動したくて.
    taskkill /im hoge.exe /f
    start C:\hoge.exe
  という2行のバッチを書いたら, hoge.exeがまだ終了しきってなくて起動しませんでした.
  hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので.
  タスクリストから居なくなったことを確認してから起動したいのですが.
  どう書けばよいのでしょうか?

  21 :デフォルトの名無しさん:2018/12/04(火) 21:09:17.31 ID:YV7FMG5g
  TASKLISTで確認?

  22 :デフォルトの名無しさん:2018/12/05(水) 10:02:24.61 ID:miUFx5r6
  >>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 :デフォルトの名無しさん:2018/12/05(水) 15:06:21.73 ID:B1LaPmLX
  >>20
  tasklist xx|findstr xx
  if %errorlevel% == 0

  24 :デフォルトの名無しさん:2018/12/05(水) 15:22:10.57 ID:GaZgkwnu
  今help見たら, まだ直ってねえ. . .
  tasklist/?のフィルター名IMAGENAMは間違いだ. . .
  for /f "skip=1" %%i in ('tasklist /fi "imagename eq hoge.exe"')do goto
  check_run

  25 :デフォルトの名無しさん:2018/12/05(水) 15:39:45.58 ID:GaZgkwnu
  あ, 条件が逆w. . .

  26 :デフォルトの名無しさん:2018/12/05(水) 15:42:42.33 ID:GaZgkwnu
  逆じゃないなw ボケたなあ. . .

  27 :20:2018/12/05(水) 22:04:34.15 ID:82viBDdQ
  みなさんレスありがとうございます!
  明日職場で試してみますね.
  恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので.
  (WinXP Homeです. Win7が故障中なので・・・)
  どうもありがとうございました!

  28 :デフォルトの名無しさん:2018/12/05(水) 22:18:55.09 ID:NGe7cQU/
  XPならtimeoutも無いから.

  29 :デフォルトの名無しさん:2018/12/06(木) 05:58:03.99 ID:+WfW7iJP
  XPってtaklistすらないんか・・・. ポカーン.
  にしては[下矢印]のスレは盛況だな. w.
  WindowsXPを使い続けるよ Part94
  https://mevius.5ch.net/test/read.cgi/win/1543650955/

  30 :デフォルトの名無しさん:2018/12/06(木) 06:30:42.74 ID:U/lGMKnD
  XP Proにはあるんだが.
  XP HomeではPowerShellのGet-Processで代用できるらしいよ.
  PowerShell1.1以降らしいから, PowerShell2.0をインストールしないといけないけど.

  31 :デフォルトの名無しさん:2018/12/06(木) 15:26:32.29 ID:iJNEICpM
  Sysinternals Suite にある, pslistを始めとするコマンド群を利用すれば,
  XPでも同等のことは出来る.

  32 :デフォルトの名無しさん:2018/12/06(木) 21:28:59.92 ID:HLPPFLjR
  XPの駆除には苦労した.
  Vistaの切られぶりには辟易.
  管理者って損な役回りだよなぁ・・・.
  今は7の駆除中.

  33 :デフォルトの名無しさん:2018/12/06(木) 23:38:01.47 ID:UfR2YFj9
  >>18
  ありがとうございます.
  レス内のものは上手く行きませんでしたが別でうまく行くものを作るためのヒントになりました.

  34 :デフォルトの名無しさん:2018/12/07(金) 11:34:54.02 ID:k1b27fN5
  >>19
  それパイプ処理してるコマンドの方の問題じゃなくて?

  35 :デフォルトの名無しさん:2018/12/07(金) 12:17:44.85 ID:cJMcluJv
  俺には何が原因か分からない.
  画面コンソール入力するたびに最下段にスクロールするし.
  スレチだけど.
  gpg -d で画面表示させるとエラー.
  gpg -h で画面表示させると文字化けまくり.
  cmd の表示関係が最近おかしい. . .

  36 :デフォルトの名無しさん:2018/12/07(金) 19:56:05.65 ID:iBsL10N5
  xcopyで出来ることは全てrobocopyでも出来るという認識で良いのでしょうか?

  37 :デフォルトの名無しさん:2018/12/07(金) 21:49:55.05 ID:cUniS7mm
  >>36
  削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな.
  ただ, xcopy が対話指向なのに対して robocopy はバッチ指向になってる. (言い換えればログ指向)
  コマンドを置き換えれば良いというものではない. 場合によってはログが五月蠅い.
  ま, 今時, ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う.

  38 :not 36:2018/12/07(金) 23:31:50.72 ID:J47iFz0r
  >>37
  >ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う.
  そうだったのか, 情報ありがとう.
  調べたらxcopyを使ったバッチファイルがあった, なおそ.

  39 :デフォルトの名無しさん:2018/12/08(土) 20:14:50.36 ID:Zhb2FJyz
  xcopyはほぼフォルダ丸ごとコピー用途に使ってたから.
  /mirオプションで済むrobocopyの方が覚えやすくて助かる. w.
  コピー自体も高速らしいし.

  40 :37:2018/12/08(土) 22:52:01.33 ID:i9Z2WdJR
  >>38
  xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ.
  ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい.
  対話式に目で動作を見ながらの分にはいいけど, それ以外の用途にはお勧めしないのだ.

  41 :デフォルトの名無しさん:2018/12/08(土) 23:16:46.42 ID:hZepSGXS
  単純コピーだったらxcopyの方がはるかに早かった気がするんだが.

  42 :デフォルトの名無しさん:2018/12/08(土) 23:33:03.66 ID:fChhgbp6
  ネット越しだと, SSHが使えるrsyncがいいんだけど,
  Windowsで使うにはcygwinが必要になるのでやや使いづらいかも.
  そこで, クラウドでも使えるrsyncという触れ込みのrcloneがいいかな.
  タイムスタンプだけが変更された時でも, 実体をコピーすること無く, タイムスタンプだけを変更するなど,
  それなりに賢い処理がされるようだ.
  もちろんローカルファイル同士でも使える.
  バッチによる基本的なバックアップ用途の使い方しかしていないけど, とにかく多機能でおすすめ.
  GoogleドライブやOneDriveなんかのクラウドへのバックアップも, バッチ処理で簡単にできる.

  43 :39:2018/12/09(日) 10:35:27.52 ID:lZKvlyRa
  >>41
  過去にrobocopyのが速いみたいな記事を見た気がしたんだが.
  今探しても見当たらないので記憶違いかもしれぬ・・・.

  44 :デフォルトの名無しさん:2018/12/12(水) 12:03:09.26 ID:wwhUpKQ/
  Windows 10 19H1 で notepad が.
  BOM無しUTF-8がデフォルト になるそうだな. . .
  いっそのこと コマンド プロンプトも変えてくれ.

  45 :デフォルトの名無しさん:2018/12/13(木) 07:50:54.80 ID:3pDLloxA
  バッチファイルの第一引数をファイル名にしたとして.
  ファイル名に&とか^が入るときどうやって処理すればいいの?
  代入するとエスケープされて消えちゃうのよ.

  46 :デフォルトの名無しさん:2018/12/13(木) 09:07:24.92 ID:J8CqZcRY
  結局, BOM の有無を気にする開発者がいなかった.
  欧米人には関係ないから.
  ただ, Explorer では, BOMが無いと, UTF-8・sjis の区別がつかないから, 文字列で検索できなくなるから,
  漏れは, Windows10・WSL・Ubuntu16.04 で, grep を使っている.

  47 :デフォルトの名無しさん:2018/12/13(木) 09:48:12.16 ID:vKHUraGB
  >>45
  入らないようにする.

  48 :デフォルトの名無しさん:2018/12/13(木) 16:46:34.51 ID:H7Y/MSWd
  >>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
  ありがとうございます.

  50 :デフォルトの名無しさん:2018/12/15(土) 01:06:37.50 ID:1s8Yv8lB
  dir ってオプション(スイッチ)の順番で表示が異なるのを発見.
  CD /D C:\
  dir /AH /A-D
  dir /A-D /AH

  51 :デフォルトの名無しさん:2018/12/15(土) 04:41:20.49 ID:s5MEHoIJ
  話変わるがスペース無くてもOK.
  CD/D"C:\
  DIR/AH/A-D
  DIR/A-D/AH

  52 :デフォルトの名無しさん:2018/12/15(土) 08:56:57.96 ID:q+o88Lhc
  その仕様のせいでパス区切り文字を/にすることができないという呪いが.

  53 :デフォルトの名無しさん:2018/12/16(日) 12:34:58.23 ID:2Wn8M764
  仕様がカオスになってるよね.
  はやくLinuxcommandも標準対応して欲しい.

  54 :デフォルトの名無しさん:2018/12/17(月) 00:07:47.83 ID:C+acxNdu
  >>53
  DOSってMS最古だから, ビルベイツ謹製のコードか仕様が残っていて.
  今の社員は恐れ多くて変えられない.
  ということにしておこう.

  55 :デフォルトの名無しさん:2018/12/17(月) 00:08:37.24 ID:msnfpX97
  >>51
  そうだったのか, サンクス.

  56 :デフォルトの名無しさん:2018/12/17(月) 07:58:43.76 ID:xQB1O269
  >>53
  永久にならないから忘れろ.

  57 :デフォルトの名無しさん:2018/12/17(月) 19:54:34.22 ID:zeK+PGUB
  >>43だけどやっぱわからん!
  sendtoにバッチファイル入れといてフォルダを指定します.
  指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない.
  batファイル  &というフォルダを右クリック送るをした時.
  @echo off
  echo "%~f1"    これは表示できる.
  set fname="%~f1"
  echo "%fname%"  &や^が消えてしまう.
  どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし.

  58 :デフォルトの名無しさん:2018/12/17(月) 20:25:30.59 ID:CiJxr7Yn
  set "fname=%~f1"

  59 :デフォルトの名無しさん:2018/12/17(月) 20:26:56.58 ID:uU80GVRL
  >>57
  echo %fname%

  60 :デフォルトの名無しさん:2018/12/17(月) 20:28:40.66 ID:uU80GVRL
  あ, ごめん.
  どっちでもいいよ.

  61 :デフォルトの名無しさん:2019/01/07(月) 13:47:43.45 ID:ZTiiH/I2
  バッチファイル中の*.*で, そんなファイルはないとエラーが出た.
  もう一度実行するとこれまでどおり問題なしに実行.
  windows更新の影響かセキュリティソフトのせいかも知れないが,
  ウィルスがコマンドをすり替えている可能性もあるから, バッチ中のコマンドはパスも含めて.
  たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った.

  62 :デフォルトの名無しさん:2019/01/07(月) 15:56:36.05 ID:ZNh/EsxI
  話変わるが.
  今は *.* としても意味無いよ * だけでOK.

  63 :デフォルトの名無しさん:2019/01/07(月) 16:12:14.33 ID:06gMfJVc
  >>62
  そうですか, 昔のくせでつい.
  ありがとうございます.

  64 :デフォルトの名無しさん:2019/01/07(月) 17:05:59.89 ID:ZNh/EsxI
  色んなソフト入れると %PATH% が膨れ上がる.
  使わないパスが30個とか..
  気味が悪いのでバッチの先頭に.
  PATH C:\WINDOWS\system32;C:\WINDOWS;
  と書くようにしてる.

  65 :デフォルトの名無しさん:2019/01/07(月) 20:11:25.89 ID:xW7Pde1m
  既に存在しないフォルダが環境変数PATHに設定されてるとコマンド検索がそこで止まってしまう.
  こんなのを使って時々確認するといい.
  powershell $env:path -split ';'^|%{$_ , (test-path $_ -patht cont ^)}

  66 :デフォルトの名無しさん:2019/01/11(金) 19:37:34.13 ID:WNI2j4XF
  遅延環境変数OFFでやると面倒だ.
  ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る.

  67 :デフォルトの名無しさん:2019/01/12(土) 00:39:03.28 ID:IAz54C40
  PowerShell で, $env:path -split ';' と打つと,
  C:\WINDOWS\system32
  C:\WINDOWS
  Intel を除いて, これらが先頭に来る.

  68 :デフォルトの名無しさん:2019/01/12(土) 07:44:55.84 ID:uK0WXiBn
  >>67
  普通はね.

  69 :デフォルトの名無しさん:2019/01/14(月) 09:23:20.28 ID:e5YcHVOA
  @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 :デフォルトの名無しさん:2019/01/14(月) 09:53:16.85 ID:e5YcHVOA
  マイクロソフトがどこまでチェックしているか知らんが.
  コマンド追加したら干渉する可能性はあるな.

  71 :デフォルトの名無しさん:2019/01/20(日) 00:11:28.57 ID:xs+avKSw
  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 :デフォルトの名無しさん:2019/01/20(日) 00:13:41.92 ID:xs+avKSw
  [上矢印]HOGEの下には実際にはaaa~cccのようなフォルダが無数にあります・・・.

  73 :デフォルトの名無しさん:2019/01/20(日) 00:15:44.50 ID:xs+avKSw
  [上矢印]たびたびすみません.
  正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です.

  74 :デフォルトの名無しさん:2019/01/20(日) 02:15:14.20 ID:pk2ilGy6
  for /d /r
  とif文つかえばいいだけじゃん.

  75 :デフォルトの名無しさん:2019/01/20(日) 04:39:06.95 ID:K0yQSeRR
  del

  76 :デフォルトの名無しさん:2019/01/20(日) 07:09:39.32 ID:YWDkxQqJ
  FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2> nul

  77 :デフォルトの名無しさん:2019/01/20(日) 07:32:36.37 ID:YWDkxQqJ
  バッチにするまでもない.
  直接入力なら%%を%に.

  78 :デフォルトの名無しさん:2019/01/20(日) 09:22:02.93 ID:pk2ilGy6
  >>76
  rdのところ.
  rd/s/q "%%~I\old\"
  にした方がよいと思う.

  79 :デフォルトの名無しさん:2019/01/20(日) 10:27:11.29 ID:pk2ilGy6
  おいらならこう書く.
  for /d /r c:\hoge %a in (old) rd /q /s %a

  80 :デフォルトの名無しさん:2019/01/20(日) 10:28:21.11 ID:xs+avKSw
  >>76
  どうもありがとうございます!バッチリ削除できました.
  >>78
  私も>>78さんのコメントを読んで例えば"old2"という名前のフォルダがあったらこれも消えてしまうのかも?と思ったのですが,
そんなことはありませんでした.
  でも見た目でそのような疑問を覚える人もいるかもしれないなと思い, 特に不要ではあるのですが"old"のあとに"\"を付けることにしました.
  ありがとうございます.

  81 :デフォルトの名無しさん:2019/01/20(日) 10:36:33.72 ID:xs+avKSw
  でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か・・・.

  82 :デフォルトの名無しさん:2019/01/20(日) 10:54:52.71 ID:YWDkxQqJ
  >>78 なぜ?
  >>79 ワイルドカードじゃないとオプション /D は無意味.
  これでもいいが.
  FOR /R %%I IN (OLD) DO RD/S/Q "%%I" 2> NUL

  83 :デフォルトの名無しさん:2019/01/20(日) 11:08:28.37 ID:pk2ilGy6
  >>82
  >ワイルドカードじゃないとオプション /D は無意味.
  ちゃんとフォルダのみをフィルタするよ, 試してみてね.

  84 :デフォルトの名無しさん:2019/01/20(日) 11:18:39.20 ID:YWDkxQqJ
  そうかな?
  RD の前に echo 付けて見たら?
  ファイルでも RD OLD がでるぞ.
  FOR のヘルプをよく見てね.

  85 :デフォルトの名無しさん:2019/01/21(月) 21:18:15.33 ID:9WBiq3dN
  ざっくり言うと,
  EternalForceBlizzard.bat C:\hoge
  とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ・・・かな.
  >>82
  どうでもいいけど全部大文字とかやめれ.
  内容は知らんが死ぬほどダサい.

  86 :デフォルトの名無しさん:2019/01/21(月) 21:58:45.27 ID:rFmuVz+a
  今後は小文字にするよ. 気が変わるかもしれんが.
  forの括弧内のファイルは存在しなくてもスキップしない.
  例外はワイルドカードで対象はファイル.
  /dだと対象はフォルダ.
  ただそれだけの話だ.

  87 :デフォルトの名無しさん:2019/01/22(火) 11:52:34.58 ID:dXptnPwJ
  findstrの結果に文字列を連結したいのですがうまくいきません.
  どうしたらよういでしょういか?
  cd /d %~dp0
  type test1.txt | echo"りんご" & findstr "りんご" >>out.txt

  88 :デフォルトの名無しさん:2019/01/22(火) 14:00:46.60 ID:CTNOEPFx
  call :a "りんご" test1.txt > out.txt & goto :eof
  :a
  echo %1 & findstr %1 %2

  89 :デフォルトの名無しさん:2019/01/22(火) 15:31:22.37 ID:dXptnPwJ
  >88
  ありがとうございます.
  [りんご]
  [りんごを含んだ文]
  [りんごを含んだ文]
  [りんごを含んだ文]
  といった感じにでました.
  [りんご][りんごを含んだ文]
  [りんご][りんごを含んだ文]
  [りんご][りんごを含んだ文]
  という感じはならないでしょうか?

  90 :デフォルトの名無しさん:2019/01/22(火) 15:58:11.82 ID:CTNOEPFx
  call :a "りんご" test1.txt > out.txt & goto :eof
  :a
  for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i

  91 :デフォルトの名無しさん:2019/01/22(火) 16:44:03.03 ID:dXptnPwJ
  >90
  おお!, うまくいきました. ありがとうございます!.
  エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです.

  92 :デフォルトの名無しさん:2019/01/22(火) 17:08:05.17 ID:nMQEwTi4
  単に行数を少なくするだけの&の使い方で.
  デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい.

  93 :デフォルトの名無しさん:2019/01/22(火) 17:31:44.20 ID:CTNOEPFx
  そういうのは質問者の方で調整よろしくお願いします.

  94 :デフォルトの名無しさん:2019/01/22(火) 18:02:51.94 ID:nMQEwTi4
  >>93
  別に>>90に文句言ってるわけじゃなくて.
  質問者が&に感心してたので, 質問者にアドバイスのつもりで書いただけ.

  95 :デフォルトの名無しさん:2019/01/22(火) 18:15:04.06 ID:CTNOEPFx
  言いたい事は分かります.
  はっきり言って自分用のバッチはこんな書き方はしません.
  行数を抑える為に繋いでるだけなんで.
  バランス見て改行します. すみません.

  96 :デフォルトの名無しさん:2019/01/22(火) 18:27:13.64 ID:nMQEwTi4
  って思ったら, 質問者は&に感心してたわけじゃなくて.
  逆に&で簡単に書けない点が不満なんだな.

  97 :デフォルトの名無しさん:2019/01/22(火) 19:15:10.41 ID:ak2Ch+AT
  Basic言語では&は文字列結合演算子だが.
  バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる.
  文字列結合演算子自体が存在しない.

  98 :デフォルトの名無しさん:2019/01/23(水) 13:46:03.43 ID:HgbeZ9kI
  昨日の質問者です, たびたびすみません.
  複数ワードを処理しようとして.
  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窓に「別のプロセスが使用中です」と表示されてしまいます.
  なにかメモリ的なものがいっぱいになるのでしょうか?
  回避方法はありますでしょうか?

  99 :デフォルトの名無しさん:2019/01/23(水) 15:17:41.73 ID:HwNiCy+r
  意味不明だが?
  @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

  100 :デフォルトの名無しさん:2019/01/23(水) 15:33:11.44 ID:HwNiCy+r
  今時, メモリ不足とか滅多に無いよ.
  バッチで80byte文字列の一万個の配列変数とかやったことあるけど.
  問題なかったよ.

  101 :デフォルトの名無しさん:2019/01/23(水) 16:10:02.06 ID:HgbeZ9kI
  >99さんの書式にするとうまくいきました.
  おそらく私が.
  :a
  for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
  をいっぱい書いてしまったからかもしれません.

  102 :デフォルトの名無しさん:2019/01/24(木) 07:52:40.56 ID:ElV7iNpQ
  文字列:形式の「ラベル」はバッチファイル内でユニークにしてください.
  今回のa:は共通サブルーチンなので, バッチ内で1つで良く, コードの最後に置きましょう.
  サブルーチンを使う場合, メインルーチンのラストにはgoto :eof
  を書くようにしてください. これが無いとメインが終わった後にまたサブルーチン処理が行われます.

  103 :デフォルトの名無しさん:2019/01/24(木) 07:58:36.47 ID:ElV7iNpQ
  またバッチ内で複数のサブルーチンを使いたい場合はそれぞれのサブルーチンの後にexit /bのコマンド行を付けてください.
  exit /bによってメインルーチンに処理が戻ります.
  これ無いと下の行に処理が遷移してしまいます.

  104 :デフォルトの名無しさん:2019/01/24(木) 10:48:11.21 ID:4/xiY5nl
  なるほど, 丁寧な説明ありがとうございます.

  105 :デフォルトの名無しさん:2019/01/24(木) 11:16:25.14 ID:tFfJW+eT
  cmdの基礎を勉強しろ.
  あまりにも質問のレベルが低いとレスがつかないと思え.

  106 :デフォルトの名無しさん:2019/02/16(土) 02:44:12.08 ID:Aqg/y48e
  for %%I in (*.txt) do (
  echo #%%I
  )
  *.txt だけでなく *.txt2 などもあれば表示する.
  .txt などの拡張子が3文字の時だけ4文字目以降を無視する.
  拡張子が2文字の時は問題なし.
  バグか仕様か.

  107 :デフォルトの名無しさん:2019/02/16(土) 14:24:30.26 ID:dbRt9asv
  dir もね.
  他にもMS-DOS用の短い名前に反応したり.
  ワイルドカードは, いやらしい動作をするね.

  108 :デフォルトの名無しさん:2019/02/16(土) 15:05:34.51 ID:H4+bjsi1
  dir c:\*1
  でProgram Filesが表示されるやつか.

  109 :デフォルトの名無しさん:2019/02/16(土) 15:23:46.61 ID:dbRt9asv
  del *~*
  は危険.

  110 :デフォルトの名無しさん:2019/02/16(土) 18:22:32.57 ID:VRMsBAkU
  8.3形式でもファイル見てるのね.

  111 :デフォルトの名無しさん:2019/02/16(土) 21:48:09.10 ID:6/sri1HY
  >>107
  dirまでそうでしたか.
  知らなかったのは私だけで, みんな知ってたのですね.
  DOSの特別実装仕様ということにしておこう.

  112 :デフォルトの名無しさん:2019/02/17(日) 08:58:17.36 ID:2q4tHixb
  *.txt2 のファイル名を dir/x で見ると.
  *~1.TXT とか *~2.TXT になってるから.
  dir *.txt
  dir *txt
  dir *xt
  dir *t
  で一致するということね.

  113 :デフォルトの名無しさん:2019/02/17(日) 10:18:01.03 ID:vf3NvI2M
  やっても良いPCなら OS インストール直後に.
  >fsutil 8dot3name set
  で set 1 をして 8.3名作成を無効化するけど.
  >fsutil 8dot3name strip
  を実際にはしたことがない俺チキン.

  114 :デフォルトの名無しさん:2019/02/17(日) 18:32:35.83 ID:2q4tHixb
  これでOK.
  for %%i in (*.txt) do if /i "%%~xi"==".txt" echo %%i

  115 :デフォルトの名無しさん:2019/02/18(月) 23:00:03.97 ID:xTG5esR6
  以下のように「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

  116 :デフォルトの名無しさん:2019/02/18(月) 23:02:17.45 ID:xTG5esR6
  すみません, higeの下のファイル名がずれてしまいました.
  正しくは[下矢印]です.
  * 書き換え前.
  +--hige
    おおお.jpeg
    かかか.gif
  * 書き換え後.
  +--hige
    aaa.jpeg
    aaa.gif

  117 :デフォルトの名無しさん:2019/02/18(月) 23:05:19.42 ID:xTG5esR6
  それと, 同一フォルダ内に同じ拡張子のファイルは複数存在しません.

  118 :デフォルトの名無しさん:2019/02/18(月) 23:08:58.74 ID:rXc7x2eo
  for文とmv組み合わせでしょ.
  サイト2個検索した方が聞くよりはやくできるとおもうけど.
  なんで質問したの?

  119 :デフォルトの名無しさん:2019/02/19(火) 06:30:48.56 ID:Hb9ZoB2m
  >>115
  for /r "c:\hoge" %%i in (*) do ren "%%~fi" "aaa%%~xi"

  120 :デフォルトの名無しさん:2019/02/19(火) 09:50:06.91 ID:Hb9ZoB2m
  話変わるが.
  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

  121 :デフォルトの名無しさん:2019/02/19(火) 10:03:42.75 ID:/Qrw8ZSg
  管理者として実行したいアプリ, さらに優先度を低で起動させる方法ありますか?
  さらにそれをスタートアップに登録したいんです.

  122 :デフォルトの名無しさん:2019/02/19(火) 10:09:52.10 ID:e0NdV1CM
  タスクに登録すれば?

  123 :デフォルトの名無しさん:2019/02/19(火) 10:57:12.10 ID:Hb9ZoB2m
  start /LOW のコマンドのショートカットを.
  スタートアップのフォルダに入れりゃいいんじゃね.
  ショートカットの設定は管理者にして.

  124 :117:2019/02/19(火) 20:46:10.94 ID:kZ82VOHH
  >>118
  ネットで探したのですが, バッチファイルをやり始めて日が浅いので使うコマンドの見当も付きませんでした.
  今日職場で必要だったので聞いてしまいました.
  >>119
  助かりました.
  どうもありがとうございます.

  125 :デフォルトの名無しさん:2019/02/20(水) 00:04:58.50 ID:GzdyKGwx
  聞いたほうが早いならそれでもいいと思うよ.

  126 :デフォルトの名無しさん:2019/02/20(水) 08:00:48.35 ID:vs0GH/UB
  AzureAD, Office365を使うなら(Office365についてはGraphの使いこなしも必須). バッチやVBSの代替としても必須.
  「Powershellが出来る」だけではなくPowershellも活用し, なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素.

  127 :デフォルトの名無しさん:2019/02/20(水) 08:01:45.93 ID:vs0GH/UB
  すみません.
  >>126は誤爆.

  128 :デフォルトの名無しさん:2019/02/21(木) 18:42:23.51 ID:WAQ7+H44
  環境変数の中に=があると.
  変数参照が変な事になってくるな. . .
  >set a=b=c
  >echo %a%
  b=c
  >echo %a=b%
  c

  129 :デフォルトの名無しさん:2019/02/21(木) 19:45:58.39 ID:bhin4IwL
  イコールは^つけないと特殊な動作するはず.

  130 :デフォルトの名無しさん:2019/02/21(木) 20:25:05.21 ID:WAQ7+H44
  俺も最初はそう思ったんだけど. . .
  >set a=b^=c
  >echo %a=b%
  c

  131 :デフォルトの名無しさん:2019/02/21(木) 21:37:53.86 ID:m0MzDbdd
  ならないんだけど?(win7)
  BATだと.
  ECHO は <ON> です.
  ダイレクトだと.
  %a=b%

  132 :デフォルトの名無しさん:2019/02/21(木) 21:41:55.31 ID:oU3vU03f
  自分の環境でもならない.
  win10

  133 :デフォルトの名無しさん:2019/02/21(木) 22:19:20.44 ID:WAQ7+H44
  バッチでやって見た.
  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

  134 :デフォルトの名無しさん:2019/02/21(木) 23:16:08.70 ID:WAQ7+H44
  >>133
  たった今, 品質更新プログラムのインストールしました.
  KB4487044 (OS ビルド 17763.316)
  なんと正常になったようです.
  結果.
  b=c
  ECHO は <OFF> です.

  135 :デフォルトの名無しさん:2019/03/01(金) 16:41:47.85 ID:7J1MA7z+
  1.batファイルで.
  start ***.bat
  を実行してその***.batの中に.
  call ***.exe
  があるんだけど.
  最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?

  136 :デフォルトの名無しさん:2019/03/01(金) 16:56:22.92 ID:1DJZnnpK
  start "" /min "hoge.exe"

  137 :デフォルトの名無しさん:2019/03/12(火) 10:13:24.40 ID:2ZxzO4Nc
  forで行取得して並列で処理してるんですが, 一度にすべて実行するのでPCの負担が大きいです.
  さらに回数指定するには, どうすればできますか?

  138 :137:2019/03/12(火) 11:09:28.51 ID:2ZxzO4Nc
  すみません. 説明不足でした.
  初めにforでテキストを取得しsetに割り当て, 全てをコマンドとして生成して並列処理しています.
  並列で3回ずつ実行し終了をループしたいです.

  139 :デフォルトの名無しさん:2019/03/12(火) 13:04:35.48 ID:6sZCRvoD
  batを見ないと良く分からん.

  140 :デフォルトの名無しさん:2019/03/12(火) 14:22:43.31 ID:JT0qCUVC
  FORでサブルーチンをCALLするようにして,
  3回呼び出されたら実行するようにするとかかな.
  これ以上は元のバッチを見ないと何とも.

  141 :デフォルトの名無しさん:2019/03/12(火) 14:35:25.41 ID:ollYoz5v
  並列処理ということは, 非同期呼び出しを使ってるわけだから.
  その呼び出した処理の終了をどうやって感知するかが肝.
  多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う.

  142 :デフォルトの名無しさん:2019/03/12(火) 20:57:10.17 ID:kFHhQjU8
  んでもそんな高度な事がしたいならVCあたりで作っちゃいかんの?

  143 :デフォルトの名無しさん:2019/03/14(木) 00:11:57.06 ID:MfJOghkN
  -- 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つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます.
  これを回避するにはどうすればいいでしょうか?

  144 :デフォルトの名無しさん:2019/03/14(木) 00:20:05.87 ID:Gms0hgp4
  毎回リセットしとけば?
  b.batの先頭でset xxx=を書くとかb.batをsetlocal~endlocalするとか.

  145 :デフォルトの名無しさん:2019/03/14(木) 00:26:03.45 ID:Gms0hgp4
  すまん良く読んでなかった.
  ファイルね.
  b.batで生成するのかな?
  削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?

  146 :デフォルトの名無しさん:2019/03/14(木) 00:37:26.49 ID:MfJOghkN
  B.batは動画のエンコードに使っているバッチファイルの中身の一部で %~dpn1_hoge.txt
  があった場合はツールに追加のオプションを指定するようにしている感じです.

  147 :デフォルトの名無しさん:2019/03/19(火) 11:54:10.54 ID:hD2ftWP/
  set day=3/19(火)
  if 1==1 (
  echo %day%
  )
  すみませんどなたか教えてください.
  曜日の半角括弧のせいでif文が閉じられてしまうんだけど.
  どうやってエスケープすればいいんでしょうか?

  148 :デフォルトの名無しさん:2019/03/19(火) 12:02:29.16 ID:9bBZVsPM
  ^)
  バッチ エスケープで検索すりゃすぐわかるだろ.

  149 :デフォルトの名無しさん:2019/03/19(火) 12:50:21.44 ID:Juttg7oZ
  括弧はpsのワンライナーでも嵌まる箇所.

  150 :デフォルトの名無しさん:2019/03/19(火) 12:57:54.34 ID:dDtGuicR
  >>147
  こういう方法もある.
  変数dayの中に, 二重引用符がなければ.
  set day=3/19(火)
  if 1==1 (
  for /f delims^=^ eol^= %%i in ("%day%") do echo %%i
  )
  これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫.

  151 :デフォルトの名無しさん:2019/03/19(火) 13:01:36.48 ID:dDtGuicR
  echo.%%i
  にしたらもっといいかも.

  152 :147:2019/03/19(火) 13:11:02.99 ID:hD2ftWP/
  set day=3/19(火)
  if 1==1 (
  echo %day:~0, 6%^)%
  )
  これでいけました.
  >>150のも今後の参考にさせてもらいます. ありがとうございました.

  153 :デフォルトの名無しさん:2019/03/19(火) 13:19:49.65 ID:dDtGuicR
  最後の % は要らんぞ.

  154 :デフォルトの名無しさん:2019/03/19(火) 20:28:12.65 ID:xvBmkr0d
  >>147
  echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある.
  これだとほとんどすべての記号がそのまま出力される. 例外として「!」は「^!」で, 「%」は「%%」で, 「^」「^^」などは要エスケープ.
  setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
  set "day=3/19(火)"
  if 1==1 (
  echo !day!
  )

  155 :デフォルトの名無しさん:2019/03/19(火) 22:00:01.63 ID:dDtGuicR
  ! とか ^ があると.
  setlocalの前に変数代入した方が楽だな.

  156 :デフォルトの名無しさん:2019/03/20(水) 22:34:42.36 ID:/eguYGP5
  一番厄介なのって [ ] だっけ?

  157 :デフォルトの名無しさん:2019/03/21(木) 01:32:50.66 ID:3Vd/nBOR
  個人的には全角スペースと()

  158 :デフォルトの名無しさん:2019/03/21(木) 21:56:31.90 ID:HPyHK69o
  day=off だと echo されない.

  159 :デフォルトの名無しさん:2019/03/21(木) 23:03:18.28 ID:HPyHK69o
  遅延モードでのエスケープの動作が面白い.
  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

  160 :デフォルトの名無しさん:2019/04/10(水) 22:17:03.83 ID:dRPi9Fbo
  コマンドプロンプトで以下のpowershellコマンドを実行すると曜日が英語で表示されるのですが,
  ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか?
  曜日の判定に使いたいのです.
      C:\>powershell "(get-date).DayOfWeek"
      Wednesday

  161 :デフォルトの名無しさん:2019/04/10(水) 22:22:48.75 ID:kh6Z72O0
  >>160
  for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"')do set "hoge=%%i"

  162 :デフォルトの名無しさん:2019/04/10(水) 23:46:13.28 ID:dRPi9Fbo
  >>161
  ありがとうございます!それでバッチリでした.
  ってかレスはやっ!

  163 :デフォルトの名無しさん:2019/04/17(水) 14:41:43.82 ID:SVkPhkuc
  読み取り専用属性付加と解除についてお願いします.
  ATTRIB +R hoge.txt
  この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが.
  ATTRIB +R *.txt
  とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます.
  バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?

  164 :デフォルトの名無しさん:2019/04/17(水) 15:11:44.94 ID:SVkPhkuc
  >>163です.
  バッチファイルにファイル名を指定してしまうと同一名のファイルしか処理できませんが.
  ファイル名が異なっていてもドロップしたファイルのみ属性変更したいのです.

  165 :デフォルトの名無しさん:2019/04/17(水) 15:30:16.10 ID:Tk94P2Iw
  >>163
  "*.txt "が邪魔.

  166 :デフォルトの名無しさん:2019/04/17(水) 15:59:23.64 ID:SVkPhkuc
  >>165
  ATTRIB +R
  これだけでいいのでしょうか.
  試してみましたが一つのファイルをバッチファイルへドロップすると.
  ディレクトリ内の全てのファイルが属性変更されてしまいます.

  167 :デフォルトの名無しさん:2019/04/17(水) 16:34:46.90 ID:HAjihGMm
  >>166
  ATTRIB +R %1
  引数のファイルだけ属性を変える.
  引数が無い場合は全てのファイルになるので.
  ガードは付けた方が良いと思う.

  168 :デフォルトの名無しさん:2019/04/17(水) 17:06:43.84 ID:SVkPhkuc
  >>167
  %1 とすることでドロップした一つのファイルが読み取り属性変更できるようになりました.
  二つとか三つとか複数ファイルはできないのですよね.
  皆さんありがとうございました.

  169 :デフォルトの名無しさん:2019/04/17(水) 17:54:55.66 ID:DeBFB2/b
  ATTRIB +R %*
  とすると複数ファイル可.

  170 :デフォルトの名無しさん:2019/04/17(水) 18:03:53.01 ID:mAjziF7r
  バッチファイルの図形プログラミング作ったら広告収入入ると思いますか?

  171 :デフォルトの名無しさん:2019/04/17(水) 18:18:21.55 ID:QABBLuNd
  俺のところじゃ>>169はエラーになる.
  for %%i in (%*) do attrib +r %%i
  まあファイル名によってはこれもダメだけど.

  172 :デフォルトの名無しさん:2019/04/17(水) 19:24:10.99 ID:SVkPhkuc
  >>169
  >>171
  みなさんありがとうございます.
  助かりました.

  173 :デフォルトの名無しさん:2019/04/17(水) 21:07:05.52 ID:3cAVwUGz
  複数ファイルドロップするなら shift でループが簡単だと思うけど何か落とし穴ある?

  174 :デフォルトの名無しさん:2019/04/18(木) 19:59:48.99 ID:pUSpmyse
  ファイルドロップで落とし穴があるとしたら >>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
  でもこれファイルドロップでしか使えない.

  175 :デフォルトの名無しさん:2019/04/19(金) 16:41:41.89 ID:nzBF9sby
  batのコマンドのタイトルバーに.
  「管理者: 」
  の表示を消すこと出来ないのでしょうか?

  176 :デフォルトの名無しさん:2019/04/19(金) 17:41:11.03 ID:HG96JCXu
  muiファイルいじるしかなかったような.

  177 :デフォルトの名無しさん:2019/04/19(金) 18:58:50.77 ID:FmrBk+Vp
  スレチと怒られそうだが.
  --- 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版でよい.
  http://egg.5ch.net/test/read.cgi/software/1533818531/3

  178 :デフォルトの名無しさん:2019/04/19(金) 21:14:57.50 ID:5yrPogsy
  >>175
  例えば d:\hoge\a.bat を実行するなら.
  ショートカットの新規作成でコマンドは.
  cmd /c start "ABC" /d "d:\hoge" a.bat
  ショートカットのプロパティで.
  実行時の大きさは「最小化」
  詳細設定で「管理者として実行」
  このショートカットを実行すると.
  a.bat が管理者として実行されて.
  タイトルは ABC のみになる.

  179 :デフォルトの名無しさん:2019/04/19(金) 21:49:09.78 ID:5yrPogsy
  >>178
  念のため書いておくが.
  バッチの中で.
  title xxx
  と書くと「管理者:xxx」
  となるので台無し.
  バッチの title コマンドは消せ.
  それが出来ないなら俺は知らん.

  180 :デフォルトの名無しさん:2019/04/19(金) 23:47:56.76 ID:UTkV4PFm
  あのさ.
  もう設計書はあるからバッチ作ってって言われて設計書見たんだが.
  「%0\..\xxx\yyy.batをコールする」とか書かれてて腰折れそうなんだけど・・・.

  181 :デフォルトの名無しさん:2019/04/20(土) 00:03:36.64 ID:oEi+Bse9
  やりたい事が書いてあるかどうかだな.
  設計書作る手間で自分でかけとも思うけど.
  外注なら設計書から作りましょうねと諭して工数確保だな.

  182 :デフォルトの名無しさん:2019/04/20(土) 00:08:13.21 ID:vpsjY4OY
  >>181
  まあやりたい事分かるからこっちで直して.
  これでいいですよね?って聞くつもりだけど.
  細かく書いといて間違えてるのやめてほしい・・・.

  183 :デフォルトの名無しさん:2019/04/20(土) 03:49:52.33 ID:C+CxU9Uj
  >>175
  隠しておかないと, 悪いことしてるのがばれちゃうもんな.

  184 :179:2019/04/20(土) 04:50:04.97 ID:HO8cTApa
  たぶん>>121の奴だろ.
  胡散臭い.

  185 :デフォルトの名無しさん:2019/04/21(日) 00:17:28.92 ID:Aqd0ZKZB
  forfilesは遅いこと.
  フォルダのファイル数が多いと極端に遅くなる.

  186 :デフォルトの名無しさん:2019/04/27(土) 20:18:12.49 ID:SEUESNkj
  >>174
  exit で終了しないと不味いな・・・.

  187 :デフォルトの名無しさん:2019/05/07(火) 09:53:38.49 ID:3q/iti6Z
  バッチとは違うけど, Microsoftさまの新しいターミナルアプリ「Windows Terminal」
  https://forest.watch.impress.co.jp/docs/news/1183011.html
  期待しても良いのかしら.

  188 :デフォルトの名無しさん:2019/05/08(水) 22:44:07.08 ID:6yW2addd
  >>187
  windows10のみだと俺は使えないや.

  189 :デフォルトの名無しさん:2019/05/08(水) 22:45:41.01 ID:o7I87B0d
  >>188
  そりゃMacやLinuxでも使えるようにする性格のアプリではないだろ.

  190 :デフォルトの名無しさん:2019/05/08(水) 23:18:47.67 ID:6yW2addd
  >>189
  どういう意味なのかな?
  俺が読んだかぎりではwindows10のみと判断したんだが.

  191 :デフォルトの名無しさん:2019/05/08(水) 23:59:34.57 ID:PAJNmCOy
  >>190
  MacやLinuxで使えないから嫌だってお前は言ってるんだよ.

  192 :デフォルトの名無しさん:2019/05/09(木) 00:09:50.10 ID:Q5GOiLDw
  build 10.0.18362.0以上でVS2017必要みたいね.
  Win8とかじゃ使えない.

  193 :デフォルトの名無しさん:2019/05/09(木) 00:35:06.30 ID:e/QFUb7b
  win7/8.1は切捨てか.
  さすがMS

  194 :デフォルトの名無しさん:2019/05/09(木) 00:47:39.20 ID:W7EsCFlC
  >>193
  サポート終了って言ってるんだから当たり前じゃね?

  195 :デフォルトの名無しさん:2019/05/18(土) 02:08:44.94 ID:5JVQU2Kx
  スレチかもなのですが, 「コアを吐く」ってどういう意味なのでしょうか?

  196 :デフォルトの名無しさん:2019/05/18(土) 02:12:53.15 ID:ChT5ZnKi
  コアダンプのことじゃね.

  197 :デフォルトの名無しさん:2019/05/19(日) 00:27:10.87 ID:p20+5ZYI
  Win10で, .(ドット)から始まる4文字以上のフォルダを再帰的に削除したいのですがうまくいきません.
  for /d /r %%d in (.????*) do rmdir /s /q "%%d"
  フォルダ名をスペースおきに書くと削除できますがワイルドカードを使って処理できないものでしょうか.

  198 :デフォルトの名無しさん:2019/05/19(日) 11:10:45.58 ID:TZwQ5fCi
  for /f %%d in ('dir /s /b ^| findstr \\\.....') do rmdir /s /q "%%d"
  とか?

  199 :デフォルトの名無しさん:2019/05/19(日) 11:21:46.43 ID:TZwQ5fCi
  >>198
  dir /s /b /ad だった.

  200 :デフォルトの名無しさん:2019/05/19(日) 11:40:23.60 ID:C4jenAHt
  >>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

  201 :197:2019/05/19(日) 12:35:02.55 ID:p20+5ZYI
  >>198-199
  >>200
  ありがとうございます!
  rmdirをechoに置き換えて確認してみましたところ, >>200 様ではフォルダ名を取得できませんでした.
  >>198-199 様で対象にしたいフォルダ名を取得できましたのでこちらを使わせていただきます.
  ありがとうございました.

  202 :デフォルトの名無しさん:2019/05/19(日) 13:00:03.54 ID:C4jenAHt
  >>201
  なにを言ってるのか意味不明だな?
  >>200 の rd を echo rd に変えたのなら問題ないだろ.
  >>198 を使うなら /f "delims=" にしろよ?
  あと, >>198 だと \.12\abc とかも消えるぞ.

  203 :デフォルトの名無しさん:2019/05/19(日) 13:23:52.91 ID:C4jenAHt
  分かった.
  隠し属性かよ.

  204 :デフォルトの名無しさん:2019/05/20(月) 07:05:59.13 ID:/nt8UTBS
  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")

  205 :デフォルトの名無しさん:2019/05/26(日) 10:45:56.66 ID:nyCVecKy
  7-Zipスレからこちらに誘導されてきました.
  バッチファイルを実行して.
  指定したフォルダを7z圧縮し別の指定した場所へ保存する方法教えてください.

  206 :デフォルトの名無しさん:2019/05/26(日) 10:55:25.50 ID:QHGhwB6i
  >>205
  7-zipのコマンドラインオプションみましたか?

  207 :デフォルトの名無しさん:2019/05/26(日) 11:03:44.74 ID:nyCVecKy
  >>206
  見ていません.

  208 :デフォルトの名無しさん:2019/05/26(日) 11:10:19.45 ID:nyCVecKy
  >>206
  今見ています.

  209 :デフォルトの名無しさん:2019/05/26(日) 17:24:55.92 ID:iePtiDR/
  >>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

  210 :デフォルトの名無しさん:2019/05/26(日) 18:42:28.21 ID:nyCVecKy
  >>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にしてみましたが動作しませんでした.
  誤った箇所ありますでしょうか.

  211 :デフォルトの名無しさん:2019/05/26(日) 19:22:25.25 ID:4n4gfKEy
  >>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

  212 :デフォルトの名無しさん:2019/05/26(日) 19:28:03.67 ID:iePtiDR/
  >>210
  コンソール入力するのが嫌なら.
  set i=Z:\TE
  set o=Z:\zz
  set n=a

  213 :デフォルトの名無しさん:2019/05/26(日) 19:35:30.91 ID:nyCVecKy
  >>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
  自分のような者に教えていただきありがとうございました.

  214 :デフォルトの名無しさん:2019/05/30(木) 23:24:33.44 ID:D3n586fF
  CMDの画面でこういうのを入力して実行したら.
  FOR /L %I IN (1, 1, 20) DO @CALL ECHO %I
  画面の上のタイトルに文字が.
  うじゃうじゃ出て来るのはなぜ?

  215 :デフォルトの名無しさん:2019/06/01(土) 22:51:37.17 ID:cR7U/Ve2
  最近の発見.
  remの前に空白をおける.
  : でラベルを示すが, :の前後に複数の空白, タブ, 全角空白があってもよい.
  : タブ abc
  またラベルの後の空白以降の文字列は無視するのでコメントを書ける.
  : abc エラーの場合.
  まあ, あまり使うところないけど.

  216 :デフォルトの名無しさん:2019/06/02(日) 00:30:45.28 ID:0ZBCelud
  最後のは割と便利そうだけど.
  現場だとコメントはREM使えっていうコーディング規約に阻まれそうだ. w.

  217 :デフォルトの名無しさん:2019/06/02(日) 03:07:05.57 ID:rFF/uYB6
  >>214
  そもそも call の引数はバッチファイル名かラベルだ.
  それ以外の, 内部コマンドや外部コマンドじゃない.
  そんな使い方, help のどこにも書いてない.
  一見, 正常に動作している様に見えるが,
  内部では子プロセスが異常終了している.
  だからタイトル名に子プロセスの残骸が残る.
  call set なども動作はするが邪道.

  218 :デフォルトの名無しさん:2019/06/04(火) 23:08:45.76 ID:YyzuHNes
  >>215
  REM は「コマンド」だから前に空白が置ける. それは当然として.
  ラベルをコメント代わりに使うのは止めとけ.
  for や if コマンドの中で「インテンドを使って」コメントに使おうとすると弾かれる.
  大人はバッチのコメントは REM で書くものだ.
  Intel のドライバーインストーラーのバッチは奇麗だと思うぞ.

  219 :デフォルトの名無しさん:2019/06/09(日) 19:33:03.04 ID:ESLww06V
  変数のサイズの最大値って何バイトなんだろう.
  @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"

  220 :デフォルトの名無しさん:2019/06/09(日) 20:37:25.93 ID:ESLww06V
  >>219
  8187 バイトかな?
  半端な値だな. . .

  221 :デフォルトの名無しさん:2019/06/10(月) 07:14:20.96 ID:24zpPZFc
  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くらいで落ちた.
  コマンドの制限に掛かるみたいやね.

  222 :デフォルトの名無しさん:2019/06/10(月) 07:46:35.61 ID:acT05/Jv
  >>221
  ありがとう, 参考にします.
  1行当たり8190文字がネックだね.

  223 :デフォルトの名無しさん:2019/06/10(月) 15:28:36.17 ID:q9TwxOtc
  >>221
  こういうのって統一して何バイトって決めないとやばくないのかな.
  windowsバージョン, 英語, 日本語, ヒンズー語など言語で微妙に変化すると,
  おかしなことがおきたり, ウィルスの侵入口に利用される.

  224 :デフォルトの名無しさん:2019/06/10(月) 18:52:33.54 ID:acT05/Jv
  遅延展開では変数名1文字なら値は8189文字まで. 半角全角は無関係.
  変数名が1文字増えると値の最大値は1文字減る.
  set "a=!b!" の様に二重引用符で囲むと最大値は2文字減る.
  遅延じゃないと a=%b% 以外のコマンドラインの文字数分が更に減る.
  変数 a が5000文字の場合.
  if %a%==%a% echo ng は落ちるが.
  if !a!==!a! echo ok は落ちない.

  225 :デフォルトの名無しさん:2019/06/10(月) 18:58:22.71 ID:OlE51f/u
  >>223
  そもそもそんなギリギリまで使う方がおかしい.
  あとウィルスとかのセキュリティの話はまた別の話.

  226 :デフォルトの名無しさん:2019/06/10(月) 19:19:36.75 ID:acT05/Jv
  cmdは既に穴だらけなんで.

  227 :デフォルトの名無しさん:2019/06/10(月) 20:08:18.95 ID:8z0TGIdq
  穴だらけなのかもしれないが, 外部に開いた穴は無いんで.
  悪用されるにはその前に侵入を許してしまってる必用がある.
  まあ侵入されたあとにコマンドプロンプトを使うようなウィルスはあるかは知らないけど.

  228 :デフォルトの名無しさん:2019/06/11(火) 05:43:03.21 ID:mwwG6pNT
  ワンラインで8kか.
  フルパス200文字位のファイルを40個D&Dしたらもうパンクか.
  ヘタレ過ぎる.

  229 :デフォルトの名無しさん:2019/06/11(火) 16:08:50.98 ID:AKGG1UAL
  初心者故説明不足でしたらご指摘ください.
  調べてもわからなく, ご教示いただけないでしょうか.
  やりたいこと.
  Windowsアップデートのインストール一覧のうち.
  2019年分のみ抽出したい.
  やったこと.
  一覧を取得するコマンドで情報をテキストファイルに出力.
  その後findstrで2019分のみを抽出しようとしたけど.
  抽出出来なかった.
  実行コマンド.
  Windowsアップデート一覧取得.
  wmic qfe get InstalledOn, HotFixID > aaa.txt
  抽出コマンド.
  findstr "2019" aaa.txt
  抽出コマンド実行後, 結果が帰って来ませんでした.
  なぜ結果が帰って来ないのかが全くわかりません.
  どうか, 対処法をご教示いただけないでしょうか.

  230 :デフォルトの名無しさん:2019/06/11(火) 16:21:50.48 ID:mwwG6pNT
  ユニコードだからじゃない?
  type aaa.txt > aaa1.txt
  aaa1.txt でやってみろ.

  231 :デフォルトの名無しさん:2019/06/11(火) 16:30:25.48 ID:SBjduyI+
  wmicはリダイレクトするとUTF16LEになるから.
  230みたいに文字コード変換するか, パイプで.
  wmic qfe get InstalledOn, HotFixID | findstr /n "2019"

  232 :デフォルトの名無しさん:2019/06/11(火) 16:31:56.22 ID:SBjduyI+
  あ, /n付けちゃったけどまぁいいか.

  233 :デフォルトの名無しさん:2019/06/11(火) 16:53:09.70 ID:AKGG1UAL
  >>230
  >>231
  ご教示頂きましてありがとうございます!
  文字コードは盲点でした. もっと勉強します.
  教えて頂いたコマンドで自身の望む結果が帰って来ました.
  ありがとうございます!

  234 :デフォルトの名無しさん:2019/06/13(木) 10:13:44.37 ID:P3O2UGUp
  Explorerから「送る」SendTo で使うバッチの中の pushd "%~dp1" が失敗するケースて有り得る?
  送るから使うって事はアクセス出来てるはずなので失敗する事はないと思うんだけど.
  pushd "%~dp1"||exit とか失敗した場合の処理書いといた方が良いのかな.

  235 :デフォルトの名無しさん:2019/06/13(木) 12:37:34.91 ID:qazE1A0w
  >>234
  パスの中に全角スペースが入っていて半角スペースが入ってない場合なんかは失敗するんじゃないかな.

  236 :デフォルトの名無しさん:2019/06/13(木) 14:43:51.05 ID:rRFcU9uI
  >>234
  フルパスに半角スペースが無くて, それ以外の文字で区切られた場合,
  区切られた位置が親フォルダだったら,
  さらにその親に移動するだけで, エラーにもならない.

  237 :デフォルトの名無しさん:2019/06/13(木) 14:50:46.43 ID:P3O2UGUp
  >>235
  その問題, 失念してた. ありがとう.
  パスに半角スペースが無くて, 全角sp"  ", コロン", ", セミコロン";",ハット"^", イコール"=" の何れかが有る時だね.
  半角sp有る無し関係なく引数全部""括るようにすれば良いのにまだこの問題残ってたんだね.
  意図しない動作ではあるものの最初にデリミタ文字を含むフォルダの親フォルダにカレント移動して pushd 自体は成功する.
  pushd が失敗する事例を知っていたら教えて欲しい.
  この問題は対応面倒なのでパスに半角スペースを含めるようにして対処するよ.

  238 :デフォルトの名無しさん:2019/06/13(木) 15:04:31.95 ID:rRFcU9uI
  引数いくつか知らんが pushd "%~dp2" は失敗するだろ.
  引数1個限定なら %2 が有れば exit するとか.
  あるいは >>48 を参考に.

  239 :234:2019/06/13(木) 16:36:42.36 ID:P3O2UGUp
  送るから使う前提で.
  pushd "%~dp1"||エラー処理.
  のエラー処理を書く意味あるかな?てのが聞きたかった事なんだ.
  まあおまじない的にpause&exitしとくよ. ありがとう.

  240 :デフォルトの名無しさん:2019/06/13(木) 17:10:58.72 ID:rRFcU9uI
  引数全部で.
  if "%~dp1"=="%~dp2"
  if "%~dp1"=="%~dp3"
  if "%~dp1"=="%~dp4"
  とか確認すりゃ問題ない.

  241 :デフォルトの名無しさん:2019/06/13(木) 17:24:03.99 ID:rRFcU9uI
  >>240
  でもファイル名使うとダメだな.

  242 :デフォルトの名無しさん:2019/06/14(金) 15:25:04.04 ID:/ScwnRxc
  誰もツッコミ無しか.
  SendTo とか D&D は何もしなくても自動的に.
  送り側のディレクトリに移動するんだが.

  243 :デフォルトの名無しさん:2019/06/14(金) 15:52:59.01 ID:/ScwnRxc
  SendTo にバッチ本体じゃなくて.
  ショートカットを入れたのかね.
  でもプロパティの作業フォルダを空にすればいい.
  怪しげな引数を利用するよりマシだろ.

  244 :デフォルトの名無しさん:2019/06/15(土) 09:44:04.71 ID:wrdBniJb
  7-ZIPの 7za.exe でワイルドカード使ったときにサブフォルダを除外するにはどうしたらいいでしょうか?
  -r-を付けてもなぜか効かないんですが.
  7za.exe a XXX.zip -r- *

  245 :デフォルトの名無しさん:2019/06/15(土) 12:34:19.95 ID:/kIGVJHV
  >>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

  246 :デフォルトの名無しさん:2019/06/15(土) 12:36:06.42 ID:/kIGVJHV
  ああ, すまん.
  .zip に置き換えて.

  247 :デフォルトの名無しさん:2019/06/15(土) 13:27:41.74 ID:/kIGVJHV
  >>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 *
  だけでいいが空のサブディレクトリを作成する.

  248 :デフォルトの名無しさん:2019/06/17(月) 08:25:16.99 ID:gSWoSWwj
  .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で同じ事をするにはどうすればいいでしょうか?

  249 :デフォルトの名無しさん:2019/06/17(月) 13:48:44.19 ID:gSWoSWwj
  248です.
  解決しました. m(_ _)m
  echoなんか付けずに.
  python3 /hoge/test.py
  でpythonが実行できました. ありがとうございます.

  250 :デフォルトの名無しさん:2019/06/17(月) 18:30:49.93 ID:/bUEZ7B5
  バッチファイルからbeep音を出す.
  echo ^G >beep.bat
  ^G は コントロールキーとG
  beep.batを実行すると音は出るが, エラーも出るので.
  type beep.bat
  のほうがよい.
  beep.bat 2>nul
  でエラーは消えるはずだが, なぜか音も出ないことがある.
  こういう基本コマンドがなぜかない.

  251 :デフォルトの名無しさん:2019/06/17(月) 21:28:51.00 ID:KEFOQI4b
  >>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回音が鳴ることになるため.

  252 :デフォルトの名無しさん:2019/06/17(月) 22:13:21.14 ID:KEFOQI4b
  無料のエディタでも制御文字を扱えるものがあるので.
  そういったものを使うと便利かと思います.
  たとえばNotepad++では制御文字を表示することができます.
  https://www.howtonote.jp/notepadplusplus/install/index10.html
  入力は編集-文字コード表から.
  サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした.
  (自分はユーザではなく詳しくないので実際はあるのかもしれない)
  http://sakura-editor.sourceforge.net/htmlhelp/HLP000255.html

  253 :デフォルトの名無しさん:2019/06/17(月) 22:46:13.03 ID:kzHmUXK8
  トリッキーだが, コントロールコードを直接書かないで実現することもできるね.
  ここの過去ログ%11にあったけど.
  for /f "delims=0" %%I in ('cmd /u /c echo *') do set BEL=%%I
  echo %BEL%

  254 :デフォルトの名無しさん:2019/06/17(月) 23:09:42.80 ID:+j+1wiRe
  バッチにバイナリエディタで入力したら.
  どんな値でも変数に代入出来るのかな?

  255 :デフォルトの名無しさん:2019/06/17(月) 23:10:40.48 ID:KEFOQI4b
  >>251
  訂正.
  誤:echo type beep.txt> beep.bat
  正:echo type beep.dat> beep.bat

  256 :デフォルトの名無しさん:2019/06/18(火) 17:34:44.10 ID:eep67jJ0
  cls|choice 1>nul 2>nul

  257 :デフォルトの名無しさん:2019/06/18(火) 19:33:08.53 ID:KnqBLmEX
  >>251
  なるほど, どっちもありですね.
  echo ^G> beep.dat
  echo type beep.dat> beep.bat
  echo @echo ^G> beep.bat
  @echo のこんな使い方は初めて見た, 知らなかったです.

  258 :デフォルトの名無しさん:2019/06/23(日) 06:51:19.02 ID:dygsK1bo
  Windows Terminal早速試せるみたい.
  Microsoft's new Windows Terminal now available to download for Windows10 - The
  Verge
  https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features

  259 :デフォルトの名無しさん:2019/06/23(日) 12:23:35.72 ID:Lc+3aX4/
  >>258 そこに書いてある.
  Microsoftはまた, Linux用のWindows Subsystem(WSL)の.
  パフォーマンスを向上させるために,
  完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます.
  こっちの方が気になるなあ.

  260 :デフォルトの名無しさん:2019/06/23(日) 12:41:20.55 ID:8sWJbccc
  WSL2でしょ.

  261 :デフォルトの名無しさん:2019/06/25(火) 00:46:23.52 ID:6j3DQJ1O
  Windows7からWindows10に変えたら, IME単語登録用ソフトのIMECが動かない.
  神は死んだ・・・.

  262 :デフォルトの名無しさん:2019/06/25(火) 19:20:48.71 ID:sBqqHKRF
  chcp 65001
  if "hoge"=="hoge" (
  echo あああ.
  echo いいい.
  )
  pause
  上みたいなbatをUTF-8で保存して実行すると.
  'o' is not recognized as an internal or external command,
  と言われてエラーになるんですが何故ですか?

  263 :デフォルトの名無しさん:2019/06/25(火) 19:23:12.67 ID:sBqqHKRF
  echoの前に半角スペース3つです.

  264 :デフォルトの名無しさん:2019/06/25(火) 19:52:58.06 ID:O4gheXA8
  良く分からんが >>258 の奴でやると.
  もしかしたら上手くいくかもね.

  265 :デフォルトの名無しさん:2019/06/25(火) 19:58:43.79 ID:O4gheXA8
  chcp 65001
  if "hoge"=="hoge" (
  echo あああ& rem
  echo いいい.
  )
  pause

  266 :デフォルトの名無しさん:2019/06/25(火) 20:17:53.34 ID:O4gheXA8
  行末が非asciiだと不味いようだ.

  267 :デフォルトの名無しさん:2019/06/25(火) 20:18:26.26 ID:sBqqHKRF
  >>265
  レスありがとうございます.
  それだとエラーは出なくなりました.
  でもなんでこんな訳のわからない動作をするのかがわかりません.

  268 :デフォルトの名無しさん:2019/06/25(火) 20:34:02.78 ID:O4gheXA8
  上手く動作しないという事はバグじゃないですかね.
  それ以上はcmdの作者じゃないので分からん.

  269 :デフォルトの名無しさん:2019/06/25(火) 20:49:18.67 ID:yTOc80/J
  そもそもUTF-8保存バッチなんてまともに動くの見た事無い.
  バッチはUS-AsciiかシフトJIS保存が安全. いくらchcpでコードページが動かせようとも.

  270 :デフォルトの名無しさん:2019/06/25(火) 20:51:13.72 ID:yTOc80/J
  "シフトJIS(932) だけ? いいえ, そんなことはありません. 例えば, EUC-JP(20932) も可能です.
  しかし,Unicode(1200), UTF-7(65000), UTF-8(65001), JIS(50220) はダメです.
  なので, 実際上?は, シフトJIS(932) だけのようなものです. "
  http://scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html

  271 :デフォルトの名無しさん:2019/06/25(火) 21:18:10.64 ID:O4gheXA8
  ユニコードでしか表示できない文字を表示したいならともかく.
  "あああ" とか "いいい" じゃ全く意味が無いな.

  272 :デフォルトの名無しさん:2019/06/26(水) 07:19:54.19 ID:/FHvjGPn
  やはりbatをUTF-8で動かすと色々不安定みたいですね.
  素直にShift_JISで書くことにします.

  273 :デフォルトの名無しさん:2019/06/26(水) 08:01:27.89 ID:5bijRuYR
  ASCIIで書いてもええんやで?

  274 :デフォルトの名無しさん:2019/06/26(水) 08:13:25.58 ID:QearoGxm
  Asciiで"あああ"や"いいい"が表せるかバカ.

  275 :デフォルトの名無しさん:2019/06/26(水) 14:39:32.78 ID:wh3oZ78w
  シフト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

  276 :デフォルトの名無しさん:2019/06/26(水) 19:26:37.84 ID:jdth62TN
  ハードコーディングする必要ないだろ・・・.

  277 :デフォルトの名無しさん:2019/06/26(水) 20:16:33.91 ID:wh3oZ78w
  ユニコードのバッチでいいなら必要ないな.
  echoは行末に半角スペース付けると多分ok.
  setは二重引用符で囲めばいい.

  278 :デフォルトの名無しさん:2019/06/27(木) 00:26:23.36 ID:65pELY4n
  会得したところで今後の人生に役に立たない, もしくは自分の仕事を受け継いだ「標準的な知識の」人間に理解できないことはしない方がいい.
  一子相伝の拳法とかじゃねーんだから.
  バッチスクリプトに限らず, 仕事でそういうことを意識できない奴は, 大抵, 後から見て自分自身でも読めないコードを書くものだ.

  279 :デフォルトの名無しさん:2019/06/27(木) 00:27:58.62 ID:65pELY4n
  このスクリプトは自分で終わり・・・.
  とかいう書き捨てスクリプトなら大いにやって良いと思う.
  使い終わったらちゃんと捨てとけよ.

  280 :デフォルトの名無しさん:2019/06/27(木) 04:32:59.89 ID:41DSIiqO
  この 低レベルに合わせる事こそ唯一の原則 みたいな風潮すごいイヤ.
  こんなとこまで啓蒙しなくていいよ気持ち悪い.

  281 :デフォルトの名無しさん:2019/06/27(木) 04:53:05.65 ID:6UZ42pkx
  >>279 板汚し失礼した. 使わないが捨てる.
  よく考えたらutf-8のバッチで変数に代入した後,
  sjisのバッチに移ればいいだけだった.
  utf-8のバッチは不安定だが代入だけなら大丈夫だろう.
  なんで気がつかなかったんだろう.
  >>280 ありがとう.

  282 :279:2019/06/28(金) 00:34:45.44 ID:khpSyJhs
  >>280
  低レベルに合わせるわけじゃねーよ.
  現代的なスクリプト言語を学んできたような人間に対して.
  「バッチスクリプトだけで通じる特殊で小賢しいハック」
  を読ませたり書かせたりするべきじゃない, 自分だけに留めとけ, 結局誰得になる, って話が何故分からないかな?
  今日も.
  「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」
  なんつったアホンダラを叱りつけたところだ.
  「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ. そりゃ, 制御コードは「お前のエディタでは」見えないよ. アホか.
  制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した.
  実際, 実環境でこっそりテストしてみたらやっぱり処理はコケた.

  283 :279:2019/06/28(金) 00:39:45.58 ID:khpSyJhs
  で, バッチにもイディオムがある.
  「AをしたいときはBと書け」ってやつ.
  そういうものは, たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない.
  つまり,
  ・言語や環境が想定している範囲内ならやってよし. むしろやれ.
  ・範囲外ならやるな. やるなら自己責任で他人に迷惑を掛けない程度に.
  ということ.
  これはどんな言語やシステムにも言えること.

  284 :279:2019/06/28(金) 00:51:59.74 ID:khpSyJhs
  もっと言うと, 何かを開発するときにまず最初にやることってのが.
  「この言語や環境はどこまで想定しているのかを調べる」
  だったりする.
  自分のやりたいことに沿ってくれるかくれないのか.
  くれないなら処理の一部だけやらせるに留めるなり, 最初から使わないなり, そういう選択をする.
  言語や環境に縛りがある場合なら, 責任者の言質を取るなり, 書面で誓約を取ってから作る.
  見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい.
  「このコード書いた奴, 死ねばいいのに」って言われても俺には関係ない, くらいの根性腐った奴ならそうすればいい.

  285 :デフォルトの名無しさん:2019/06/28(金) 04:47:52.79 ID:+wrrcV+u
  だからキモイって.
  創価学会員並みにキモイ.
  狂信者の啓蒙活動と同じ.
  こんなところではなくおまえの会社でやってろ.

  286 :デフォルトの名無しさん:2019/06/28(金) 07:00:46.98 ID:n6DQpX/4
  しかしWin環境はテキストのBOMマーク推奨なのに, for /fで読み出しするとBOMをわざわざ表示するのバカだよな.
  過去の検討不足がまんま固定してる.

  287 :デフォルトの名無しさん:2019/06/28(金) 07:22:18.87 ID:utv5/5Cv
  面倒くさい奴が一人いるな.
  何を書こうが勝手だが, ここはお前の職場じゃないぞ.

  288 :デフォルトの名無しさん:2019/06/28(金) 07:41:24.76 ID:utv5/5Cv
  >>286
  BOM付きのファイルは一行目を空行にしている.
  バッチに限らず後で色々トラブルあるから.

  289 :デフォルトの名無しさん:2019/06/28(金) 23:56:34.27 ID:b/1HFBuK
  >>284
  > 「この言語や環境はどこまで想定しているのかを調べる」
  それはかなり大変なので, 2, 3回やってもうまくいかなかったら別の言語に乗り換えるという便法が別の解決策.

  290 :デフォルトの名無しさん:2019/06/29(土) 01:27:00.86 ID:LLveF6E3
  だから何?

  291 :デフォルトの名無しさん:2019/07/04(木) 08:37:48.34 ID:yoyjVAJo
  Win10 v1903
  メモ帳で新規作成したテキストがtypeで化ける.
  もはやSJISは既定値ではない.
  cmdは旧態依然.

  292 :デフォルトの名無しさん:2019/07/04(木) 17:34:32.60 ID:9mSpzETW
  まあ chcpすりゃいいだけだし.

  293 :デフォルトの名無しさん:2019/07/04(木) 18:30:22.69 ID:wRHHZz1p
  日本語レイアウトが崩れるからだめ.

  294 :デフォルトの名無しさん:2019/07/04(木) 21:43:07.98 ID:y34WtIiv
  以前は実行中のバッチファイルを編集保存, 行を追加したり減らしたり, すると.
  エラーになってたと思うんだけど, 何かエラーにならなくなった?
  Windows10 1903 からの変更?
  たまたまなのかな?

  295 :デフォルトの名無しさん:2019/07/04(木) 21:57:41.98 ID:y34WtIiv
  >>294 自己レスです.
  すいません, 気のせいでした, たまたま起きないように見えただけで.
  普通にエラーが起きました.

  296 :デフォルトの名無しさん:2019/07/05(金) 00:07:51.66 ID:BL7Y7b8G
  実行中の行やその直後の行を追加したり削ったりすれば,
  同じ処理が繰り返しになったり, 必要な処理がスキップされる形になって.
  挙動がおかしくなるな.

  297 :デフォルトの名無しさん:2019/07/05(金) 20:30:36.68 ID:Osj0+Img
  バッチファイルスクリプトって働き方改革になるの?

  298 :デフォルトの名無しさん:2019/07/05(金) 21:19:11.24 ID:zBRgAgd8
  Powershellが10年経って育った今からバッチを学ぶ意義は薄い.

  299 :デフォルトの名無しさん:2019/07/06(土) 08:00:17.95 ID:NPkITZNc
  >>296
  全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね.

  300 :デフォルトの名無しさん:2019/07/06(土) 08:01:28.83 ID:NPkITZNc
  >>298
  PowerShellは色々トリッキーなところあるからなぁ.
  もう少し普通のスクリプト言語で良かったのに・・・.

  301 :デフォルトの名無しさん:2019/07/06(土) 10:23:31.70 ID:OJAqpfME
  >>299
  インタープリターではなくなる.

  302 :デフォルトの名無しさん:2019/07/06(土) 10:31:09.33 ID:SnF6bIfm
  働き方改革?

  303 :デフォルトの名無しさん:2019/07/06(土) 10:53:24.31 ID:NPkITZNc
  >>301
  意味わからん・・・.

  304 :デフォルトの名無しさん:2019/07/06(土) 10:59:51.87 ID:OJAqpfME
  >>303
  そもインタープリターは行単位でのみ読み込み解釈実行する仕様.
  行内容を変えても反映されないんじゃインタープリターにならない.

  305 :デフォルトの名無しさん:2019/07/06(土) 11:04:50.99 ID:NPkITZNc
  >>304
  > そもインタープリターは行単位でのみ読み込み解釈実行する仕様.
  逐次解釈は別にメモリーからでもいいだろ.
  > 行内容を変えても反映されないんじゃインタープリターにならない.
  そもそも行内容変えたらおかしくなるって話なんだが. w.

  306 :デフォルトの名無しさん:2019/07/06(土) 11:12:26.69 ID:OJAqpfME
  >>305
  1の行の処理が終わってから2の行を読み込み解釈するのがインタープリター.
  メモリ先に読み込んだんじゃ意味ないの.
  行内容変えてバグ混入させてバグったなら仕様通り.

  307 :デフォルトの名無しさん:2019/07/06(土) 11:45:00.41 ID:ddaI9LPq
  ディスクキャッシュなしだとクッソ遅いんだよな.

  308 :デフォルトの名無しさん:2019/07/06(土) 11:54:17.26 ID:NPkITZNc
  >>306
  読み込み元がファイルかメモリーかなんて関係ないだろ.
  昔のBASICはインタープリターじゃねーのかよ. w.
  > 行内容変えてバグ混入させてバグったなら仕様通り.
  バカすぎる・・・.

  309 :デフォルトの名無しさん:2019/07/06(土) 12:11:18.65 ID:OJAqpfME
  本来の仕様・特性を理解しておらず.
  メモリに全部読み込んでファイルロックかけちゃえばとか.
  どっちがアホなんだか.
  >>296 のようなことをしなければいいだけ.

  310 :デフォルトの名無しさん:2019/07/06(土) 12:13:38.81 ID:NPkITZNc
  > メモリに全部読み込んでファイルロックかけちゃえばとか.
  日本語の理解力もないのかよ・・・.

  311 :デフォルトの名無しさん:2019/07/06(土) 12:20:37.36 ID:OJAqpfME
  仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ, 自分で制作しておやりなさい」としか.
  ディスク上のプロフラムファイルを処理しろと指示しておいて, 実行中にプログラムファイル弄る方がバカでしょ?

  312 :デフォルトの名無しさん:2019/07/06(土) 12:45:33.27 ID:SnF6bIfm
  横から失礼します.
  例えば, バッチじゃないけど,
  中間コード生成するのは,
  インタプリタじゃないの?

  313 :デフォルトの名無しさん:2019/07/06(土) 12:53:22.08 ID:NPkITZNc
  > ディスク上のプロフラムファイルを処理しろと指示しておいて, 実行中にプログラムファイル弄る方がバカでしょ?
  うんうん,
  > 行内容を変えても反映されないんじゃインタープリターにならない.
  とか言ってたバカに言ってやれよ. ww.

  314 :デフォルトの名無しさん:2019/07/06(土) 13:25:39.62 ID:OJAqpfME
  >>313
  絶望的に頭悪いな.
  行内容を変えても反映されないんじゃインタープリターにならない.
  未実行の行内容をにバグ混入させればバグるのは仕様通り. インタープリタだから.
  >>299だと行内容変えても帰る前の動作を続けるかファイルが変えられなくなる.

  315 :デフォルトの名無しさん:2019/07/06(土) 13:31:06.82 ID:NPkITZNc
  > 実行中にプログラムファイル弄る方がバカでしょ?
  なのに内容変えたら反映しろとか頭おかしい. w.
  もう自分が何を指摘されてるかもわかってないんだろうな.

  316 :デフォルトの名無しさん:2019/07/06(土) 14:13:50.98 ID:OJAqpfME
  動作がバグらないように行内容をいじる方法もあるからなー.
  バカには気づけないのかもな.

  317 :デフォルトの名無しさん:2019/07/06(土) 14:26:59.31 ID:NPkITZNc
  しれっと話し変えててウケる~. w.

  318 :デフォルトの名無しさん:2019/07/06(土) 14:27:43.94 ID:ZOT0kh7c
  title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう.
  timeout 5
  powershell sleep 5
  Powershellを呼び出してもタイトルが変化しない方法ありませんか?

  319 :デフォルトの名無しさん:2019/07/06(土) 15:18:42.27 ID:Mj6xLmMK
  なんか色々とっちらかってるけど.
  入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ.
  まとめて実行する方法がバッチ.
  バッチを書くための言語の種類がスクリプト.
  なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど.
  バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない.
  あまり言われることはないけどC言語なんかも手順をまとめて記述するという.
  意味ではバッチ.
  そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに.
  変換するのがコンパイラ.
  なので>>312が言うような中間コードを生成するのは処理的にはバッチのコンパイル.
  C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで.
  中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど, これらの.
  エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する.
  ことも出来るようになっている.
  インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な.
  インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので,
  バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって.
  いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない.
  Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど, バッチ.
  スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき,
  文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで.
  実行できるバッチスクリプトって言うものも存在する.
  逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて.
  コードを読み込んで実行するので, 実行中にファイルを書き換えても読み込まれた.
  コードが変わるわけではないのでそのまま実行できる.

  320 :デフォルトの名無しさん:2019/07/06(土) 15:32:56.64 ID:Es9FYwgG
  バカの長文ウザい.

  321 :デフォルトの名無しさん:2019/07/06(土) 16:47:17.04 ID:edODQM35
  理解できないときの一行レス乙.

  322 :デフォルトの名無しさん:2019/07/06(土) 17:04:06.81 ID:l+THgL+v
  >>321
  多分, その通り.
  >>320は, 自分以外みんなバカというセンスのかたなのでしょう.
    (320著『自分以外みんなバカ』)

  323 :312:2019/07/06(土) 17:45:47.25 ID:SnF6bIfm
  >>319
  レスありがとうございました.

  324 :デフォルトの名無しさん:2019/07/06(土) 18:13:58.11 ID:yCp3HJnn
  >>321-322
  そりゃ,
  > あまり言われることはないけどC言語なんかも手順をまとめて記述するという意味ではバッチ.
  みたいなアホなことを言う奴を理解しろと言われてもなぁ. w.

  325 :デフォルトの名無しさん:2019/07/06(土) 18:30:06.42 ID:edODQM35
  アホとバカは意味がちゃうで.

  326 :デフォルトの名無しさん:2019/07/07(日) 00:42:47.20 ID:YVv/+K6C
  貴重なメモリをバッチなんかに使われたくない.
  ましてやファイルハンドル or FCBを消費するなんて考えたくもない.

  327 :デフォルトの名無しさん:2019/07/07(日) 17:57:51.72 ID:sK6+FwWI
  書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる.
  これもインタープリタゆえのメリット.

  328 :デフォルトの名無しさん:2019/07/17(水) 22:50:53.76 ID:2IS3Ei7C
  指定した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/

  329 :デフォルトの名無しさん:2019/07/17(水) 22:52:08.85 ID:2IS3Ei7C
  [上矢印]書き忘れましたが, IEを起動したらバッチファイル自体はすぐに終了して欲しいです.

  330 :デフォルトの名無しさん:2019/07/17(水) 22:58:10.74 ID:t7LU6uHU
  これで普通に開けたけど.
  start "" "C:\Program Files\internet
  explorer\iexplore.exe""https://www.yahoo.co.jp/"
  exit

  331 :デフォルトの名無しさん:2019/07/17(水) 23:41:41.05 ID:2IS3Ei7C
  >>330
  助かりました. ありがとうございます><

  332 :デフォルトの名無しさん:2019/07/22(月) 20:50:29.11 ID:64jFVFKi
  質問です.
  chcp を設定後に日本語テキストファイルを type しても.
  なぜか数行ごとに部分的に文字化けします.
  正しく表示させる方法はありますか.
  ファイルをコード変換するしかないでしょうか.
  20932 (EUC-JP)
  50220 (JIS)
  65000 (UTF-7)
  65001 (UTF-8)

  333 :デフォルトの名無しさん:2019/07/23(火) 00:29:27.63 ID:NmYCCAI2
  正常に表示できる部分もあるのか?
  コマンドプロンプトのフォント設定はレジストリをいじればできるようだが.
  chcp したとしても.
  各コードに合わせた日本語フォントがないと思う.
  ファイルをコード変換には nkf などを利用すればよい.
  もちろんcp932に変換できない文字がありえる点には注意.

  334 :デフォルトの名無しさん:2019/07/23(火) 01:19:58.32 ID:dqAnc0cb
  横から失礼. 多分フォントの問題じゃないなあ. 再現してみる.
  @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

  335 :デフォルトの名無しさん:2019/07/23(火) 13:00:19.24 ID:dqAnc0cb
  >>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でどうぞ.

  336 :332:2019/07/23(火) 19:39:52.27 ID:3qcsVE62
  みなさんレスありがとうございました.
  >>335 のバッチを実行したら正しく表示されました.
  なにか不具合があれば nkf で変換します.

  337 :デフォルトの名無しさん:2019/08/05(月) 14:25:26.72 ID:KhkfuoHG
  @ECHO OFF
  FOR /L %%I IN (1, 1, 3) DO (
  :ラベルの次に空行だと死ぬようだ.
  ECHO %%I
  )
  PAUSE

  338 :デフォルトの名無しさん:2019/08/05(月) 23:40:50.69 ID:uv4O1i4q
  >>337
  FOR コマンドの中に単純にラベルを入れるとそうなる.
  諦めろ. そういう腐った仕様だ.

  339 :デフォルトの名無しさん:2019/08/09(金) 07:12:05.83 ID:e+IGCa9q
  MSはpowershell作っといてcmdも生殺しのまま.

  340 :デフォルトの名無しさん:2019/08/09(金) 07:24:42.21 ID:i8+nUA9v
  後方互換レガシー用だから.

  341 :デフォルトの名無しさん:2019/08/10(土) 16:26:14.51 ID:O+qo9jJ2
  ・ループはなるべくラベルgotoで作る.
  ・処理はまとめてCALLで呼び出す.
  と変な仕様に悩まされなくて済む.

  342 :デフォルトの名無しさん:2019/08/12(月) 01:15:40.10 ID:qDWW1IB8
  >>341
  つーか >>337 は FOR コマンドの中に「REM コマンドの代わりとして」ラベルを入れたっぽいよね.
  REM コマンドは確かにダサい. クソみたいにダサい.
  が, 完全な代替手段はないことが今日までの先人たちの研究で分かっている.
  「**な場合正しく動かない」というケースから逃れられない.
  素直に REM しとけ, って話なのさ.

  343 :デフォルトの名無しさん:2019/08/12(月) 01:43:33.99 ID:asx4qCxc
  >>341
  そうですね.
  バッチ作成30年の知恵.
  バッチ前言語というのをつくり, バッチに変換するツールがあるといいのに.

  344 :デフォルトの名無しさん:2019/08/14(水) 08:17:57.87 ID:2+7gdzMY
  なぜエラー?
  @echo off
  for /l %%i in (1, 1, 3) do (^
  echo %%i
  )
  pause

  345 :デフォルトの名無しさん:2019/08/14(水) 12:07:08.56 ID:tEu06J9P
  空白行があるのがまずいのです.

  346 :デフォルトの名無しさん:2019/08/15(木) 07:26:44.38 ID:mKbuBo/x
  echo onで見るとechoが消えてる.
  for /L %i in (1 1 3) do (%i)

  347 :デフォルトの名無しさん:2019/08/15(木) 07:36:02.85 ID:mKbuBo/x
  今, 気付いたけど.
  for/Lのカウントの区切り文字は半角スペースでもいいんだな.

  348 :デフォルトの名無しさん:2019/08/15(木) 12:44:36.23 ID:ALsBqyPd
  なんで"("のあとでエスケープしてるんだ?

  349 :デフォルトの名無しさん:2019/08/15(木) 18:55:50.85 ID:8DKeAJZl
  >>348
  エスケープすると長い記述を改行分割できる.
  下記なら動くのではと想像.
  @echo off
  for /l %%i in (1, 1, 3) do (^
  ^
  echo %%i
  )
  pause

  350 :デフォルトの名無しさん:2019/08/15(木) 18:58:32.85 ID:8DKeAJZl
  こうかも.
  違いはechoの前の半角スペースの有無.
  @echo off
  for /l %%i in (1, 1, 3) do (^
  ^
  echo %%i
  )
  pause

  351 :デフォルトの名無しさん:2019/08/15(木) 20:14:09.75 ID:bAdklReO
  >>350
  横からだが, だとしても "(" の直後には不要でしょう.
  わざわざ地雷踏みにいってるとしか思えない.

  352 :デフォルトの名無しさん:2019/08/15(木) 20:20:13.66 ID:hL4sD0l+
  >>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

  353 :デフォルトの名無しさん:2019/08/16(金) 13:12:21.88 ID:nbkgz595
  元々^が要らんのは分かるが.
  何で2行下のechoが消えるんだ?

  354 :デフォルトの名無しさん:2019/08/16(金) 19:53:07.91 ID:tgbth6lv
  何が正解か良く分からないけど「echo」が消えているのではなく.
  「echo %%i」が実行された結果「%i」って文字列が出力されて.
  いるんじゃないかな.

  355 :デフォルトの名無しさん:2019/08/17(土) 03:04:11.02 ID:loMKkBUO
  うん, メッセージを出したかったら,
  echo [メッセ-ジ文]
  だよね.

  356 :デフォルトの名無しさん:2019/08/17(土) 07:25:02.72 ID:u1p0gnkJ
  >>346を見ろ.

  357 :332:2019/08/17(土) 18:15:26.70 ID:etNorZr1
  はろー.
  @echo off
  (^
  rem echo Hello, World!)
  pause

  358 :デフォルトの名無しさん:2019/08/17(土) 21:41:43.17 ID:nWccZbx0
  >>357
  cmd のパーサーが馬鹿なだけ.
  そういうトリッキーな小賢しい書き方を探しても誰も幸せになれない.

  359 :デフォルトの名無しさん:2019/08/17(土) 23:29:25.24 ID:u1p0gnkJ
  >>357
  そういうのはもういいから.

  360 :デフォルトの名無しさん:2019/08/20(火) 20:01:18.85 ID:S2+8M2EA
  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」に変えて実行すると, 何もファイルが表示されませんでした.
  エクスプローラでは表示されるのに・・・.

  361 :デフォルトの名無しさん:2019/08/20(火) 20:06:19.31 ID:WpfDQiIq
  まずは対象ファイルの属性を確認かな.

  362 :デフォルトの名無しさん:2019/08/20(火) 20:39:45.13 ID:WpfDQiIq
  ここに詳しく書いてある.
  https://freesoft.tvbok.com/web/ie/ie11ie10webcache.html

  363 :デフォルトの名無しさん:2019/08/30(金) 17:07:15.01 ID:C82bQLaF
  任意のテキストファイルの各行(1~N)を,
  変数のARRAY[1~N]にそのまま代入できますか?
  テキストは空行あり, 文字化けは無しで.

  364 :デフォルトの名無しさん:2019/08/30(金) 18:13:13.64 ID:C82bQLaF
  すみません.
  N行は指定じゃなくて全行です.

  365 :デフォルトの名無しさん:2019/08/30(金) 19:43:28.54 ID:hATE1ff9
  >>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)

  366 :デフォルトの名無しさん:2019/08/30(金) 20:46:06.08 ID:C82bQLaF
  >>365
  ありがとうございました.
  シフトJISで動作しました.

  367 :デフォルトの名無しさん:2019/08/31(土) 00:24:30.62 ID:dLbvCDhA
  発見.
  call は遅い.
  自バッチ内であっても繰り返しの中では使わないほうがよい.

  368 :デフォルトの名無しさん:2019/08/31(土) 02:06:06.88 ID:KhyCGx+x
  それは分かる.
  何かいい方法が有ったら書いてくれ.

  369 :デフォルトの名無しさん:2019/08/31(土) 07:34:22.10 ID:KhyCGx+x
  ループの中では, call setも遅いな.
  call先はバッチが基本なので.
  %path%のフォルダ内にset.batが存在しないか.
  ループの中で毎回, 無駄に検索して時間のロスに.

  370 :デフォルトの名無しさん:2019/08/31(土) 13:05:56.96 ID:4qIvp+ND
  フルパスか相対パスで書けばいいのに.

  371 :デフォルトの名無しさん:2019/08/31(土) 15:06:36.69 ID:ny+pXiR9
  クリーンに再実装しようとしてもうまく行かないし, Windows Terminalのオプソ化に期待.

  372 :デフォルトの名無しさん:2019/08/31(土) 21:47:05.78 ID:KhyCGx+x
  内部コマンドsetにフルパス?

  373 :デフォルトの名無しさん:2019/09/17(火) 21:00:42.57 ID:Syn6UaDZ
  ポータブルデバイスにフォルダ移動したいのですがどのコマンドを使えばよろしいのでしょうか?
  宜しくお願いします.

  374 :デフォルトの名無しさん:2019/09/18(水) 07:27:23.31 ID:zCU+H1xg
  robocopy

  375 :デフォルトの名無しさん:2019/09/18(水) 22:10:15.94 ID:zS9nLp3S
  >>374
  回答ありがとございます.
  試してみましたがうまくいきませんでした.

  376 :デフォルトの名無しさん:2019/09/19(木) 17:48:14.75 ID:W0BHkkEI
  そのポータブルデバイスとやらのスレで聞け.

  377 :デフォルトの名無しさん:2019/09/19(木) 19:33:15.60 ID:UaiZGsoz
  >>373
  MTP接続しているデバイスにbatでフォルダ移動したいということ?

  378 :デフォルトの名無しさん:2019/09/19(木) 21:49:07.77 ID:oZTJ7ty8
  >>377
  MTP接続しているデバイスの端末(スマホ)のフォルダをCドライブにコピーしたいのです.
  何度もありがとございます.

  379 :デフォルトの名無しさん:2019/09/20(金) 18:54:32.90 ID:YblgUZDU
  >>378
  MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という.
  仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな.
  COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと.
  無理みたいだけど.

  380 :デフォルトの名無しさん:2019/09/20(金) 20:53:45.43 ID:C2+cwByF
  >>379
  なるほどコマンドだけでは出来ないのですね. ありがとうございました.

  381 :デフォルトの名無しさん:2019/09/20(金) 21:22:16.17 ID:CafmkPOq
  mtpじゃなくftp使えばいいんじゃない.

  382 :デフォルトの名無しさん:2019/09/20(金) 23:15:32.97 ID:Va/jwPXC
  スレチだけど, 横から失礼.
  今USBで繋いだスマホのファイルをPCのexplorerで見てたら,
  どうしても表示されないファイルが一部あるんだよ.
  表示を更新してもダメだ. 何なんだろ, これ.
  スマホ側でzipに圧縮したら転送できたんだが.

  383 :デフォルトの名無しさん:2019/09/21(土) 09:52:34.32 ID:obXFPJy6
  >>382
  MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど.
  それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい.
  でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示.
  できないってのは覚えがないのでスマホ側の実装の問題じゃないかな.

  384 :デフォルトの名無しさん:2019/09/21(土) 11:24:33.96 ID:aqL81KxG
  >>383
  スマホのandroidがおかしいのかも.
  explorerでコピペしたら.
  全数処理できてるか要確認ですね.

  385 :デフォルトの名無しさん:2019/09/21(土) 12:19:59.86 ID:Zmbs8cMB
  >>382
  メディアストレージのDBが壊れてるか更新されてないだけでは?

  386 :デフォルトの名無しさん:2019/09/21(土) 12:39:19.92 ID:aqL81KxG
  >>385
  zip圧縮後, 繋ぎ直したらzipは表示されたが元ファイルは非表示,
  なので更新というより壊れてたみたいね.

  387 :デフォルトの名無しさん:2019/09/21(土) 23:40:04.00 ID:bVn3Z6J/
  >>378
  Android Debug Bridge(adb)を使用してはどうでしょうか?
  https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles
  例)adb pull remote local
  ただしワイルドカードが使用できないので工夫が必要かも.

  388 :デフォルトの名無しさん:2019/09/22(日) 06:16:16.89 ID:9I7oEjtC
  そもそもAndroidなのか?

  389 :デフォルトの名無しさん:2019/09/23(月) 04:39:39.37 ID:LINEF6Ks
  >>387
  adbを使用したらうまくいきました.
  ありがとうございました.

  390 :デフォルトの名無しさん:2019/10/01(火) 22:20:01.40 ID:vtcCH4Ws
  vbsスクリプト使用者に対話型でURLを入力させようと思い.
  inputboxを使用していましたが254文字以降は切り捨てられるようで.
  切り捨てられた場合にcmdを呼んでコマンドプロンプトで.
  TYPE CONで入力させ標準出力からとろうと思いました.
  コマンドプロンプトから.
  TYPE CON
  で文字入力していくと510文字しか打てません.
  COPY CON
  で文字入力していく場合も510文字しか打てません.
  ただこちらは改行して2回目以降の文字入力は254文字までしか打てません.
  コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど.
  TYPE COPYコマンドが原因なのでしょうか?
  上限が512-2 256-2なのが気になります.

  391 :デフォルトの名無しさん:2019/10/01(火) 22:57:55.77 ID:co/wCjS7
  >>390
  set /p var
  で入力すると1023文字入力できるみたい.

  392 :デフォルトの名無しさん:2019/10/01(火) 23:08:42.31 ID:vtcCH4Ws
  >>391
  ありがとうございます.
  環境変数に突っ込んでそっちからとる案ってことですね.

  393 :デフォルトの名無しさん:2019/10/01(火) 23:19:31.66 ID:co/wCjS7
  標準出力がいいなら.
  echo %var%
  を最後に付けとけばうまくいかないかな?

  394 :デフォルトの名無しさん:2019/10/01(火) 23:41:17.62 ID:vtcCH4Ws
  いえVBSで環境変数からでも取れるんでどちらでもいいんですが.
  この方法は毎回ファイル書き込みはいるのなら避けたいですね.

  395 :デフォルトの名無しさん:2019/10/03(木) 06:03:26.81 ID:qiM7wE73
  >>390
  findstr ^^
  ではどうですか?
  入力の最後は改行とCtrl+Z
  8000文字は入ったが, それ以上は試していない.

  396 :デフォルトの名無しさん:2019/10/03(木) 19:45:19.23 ID:+nOn2TPH
  >>395
  ありがとうございます. たしかにfindstr ^^ 試すと長く入力できますね.
  ただスクリプトが動く動きません(type con copy con以外)
  たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします.
  //Prompt.vbs
  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", "")

  397 :デフォルトの名無しさん:2019/10/03(木) 20:43:23.90 ID:jymbX9V4
  cmdじゃないけど.
  powershell -Command $a=read-host; write-host $a
  とかどうよ.

  398 :デフォルトの名無しさん:2019/10/03(木) 21:20:07.70 ID:+nOn2TPH
  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
  -ExecutionPolicyRemoteSigned -Command $a=read-host; write-host $a")
  Prompt = oExec.stdout.ReadLine()
  oExec.terminate
  End Function
  msgbox Prompt("test dayo", "")

  399 :デフォルトの名無しさん:2019/10/04(金) 05:33:06.84 ID:igWxDR2f
  >>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 -ExecutionPolicyUnrestricted
  -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", "")

  400 :デフォルトの名無しさん:2019/10/04(金) 06:57:13.54 ID:2Xve1BBy
  >>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", "")

  401 :デフォルトの名無しさん:2019/10/04(金) 08:44:14.07 ID:2Xve1BBy
  バッチ不要だな.
  Set oExec = WshShell.exec("cmd /c findstr /R . < con")
  最後に1023文字しか表示されないなReadLineのせいか?

  402 :デフォルトの名無しさん:2019/10/04(金) 12:18:00.19 ID:mgLzdBVB
  ありがとうございます.
  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まで増えました.

  403 :デフォルトの名無しさん:2019/10/04(金) 12:44:51.20 ID:2Xve1BBy
  それは良かった.
  ところで cmd /c cmd /c と2重になってるのは何か意味が?

  404 :デフォルトの名無しさん:2019/10/04(金) 12:49:02.43 ID:mgLzdBVB
  単なるミスです. w.

  405 :デフォルトの名無しさん:2019/10/04(金) 20:33:36.96 ID:igWxDR2f
  >>402
  HTAで作るって方向は無いのかな?
  WScriptオブジェクトは使えないけど, IEと違ってローカル処理はできるよ.
  全部HTAにするのが面倒ならUI部分をHTAで作って.
  そこから, 各々vbsを起動するようにするとか.
  サンプル http://www.42ch.net/UploaderSmall/source/1570156236.zip

  406 :デフォルトの名無しさん:2019/10/05(土) 07:49:09.72 ID:XliNsfqD
  ありがとうございます.
  HTAも便利そうですね.
  アドレスバー, リンクをドラッグドロップで取り込めるのがいいなと.

  407 :デフォルトの名無しさん:2019/10/07(月) 16:39:36.79 ID:/M5l0Sli
  そういやHTAはHighDPI対応してないのかな.
  サーフェスで苦労した覚えが.

  408 :デフォルトの名無しさん:2019/10/09(水) 19:08:15.06 ID:tUBbtl1D
  文字列の画面表示の桁数はバッチで取得できますか?
  半角1で全角2での合計みたいな.

  409 :デフォルトの名無しさん:2019/10/10(木) 19:46:16.73 ID:NVkes/cJ
  >>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 桁数= %b% & pause & goto :eof
  :x
  setlocal enabledelayedexpansion
  echo.!s!
  echo.
  入力はシフトJISで表示できる文字のみです.
  CP932で正常に動作します. たぶん.

  410 :デフォルトの名無しさん:2019/10/10(木) 23:42:47.50 ID:T8I5o9Ey
  mode con かも.

  411 :デフォルトの名無しさん:2019/10/11(金) 07:29:52.81 ID:D9aa0x5a
  >>409, >>410
  ありがとうございました!
  コードページは932でしたので問題ないです.
  これで複数のデータを右詰めで揃えて表示できました.
  タブ入りだと表示がズレますが自分で対処します.

  412 :デフォルトの名無しさん:2019/10/18(金) 19:14:42.75 ID:MUFbi2Ng
  特定の2つのフォルダ内を一括削除するbatの作り方がわかりません・・・.
  1つだけならば出来るのですが2つ指定するにはどうすればいいのでしょうか.
  お願いします.

  413 :デフォルトの名無しさん:2019/10/18(金) 19:26:30.68 ID:sHZx2IDB
  1行目にAフォルダを削除.
  次の行にBフォルダを削除でいいんじゃないの?
  1行に書きたければ.
  複数のコマンドを続けて実行する.
  https://www.adminweb.jp/command/action/index1.html

  414 :デフォルトの名無しさん:2019/10/18(金) 19:28:12.11 ID:DNcfAKqA
  2回やるbatを作ればいいのでは?

  415 :デフォルトの名無しさん:2019/10/18(金) 19:29:32.93 ID:DNcfAKqA
  あ, かぶってしまった.

  416 :デフォルトの名無しさん:2019/10/18(金) 22:56:14.67 ID:ZkRket+3
  for %%I in ( C:\AAA C:\BBB ) do del /Q %%I\*.*

  417 :デフォルトの名無しさん:2019/10/18(金) 23:57:13.31 ID:uNKAmOCu
  for /f %%i in ('dir /b^|find "foo"') do pause
  fooが無かった場合pauseしてくれないのですが解決策ありませんか?
  実際はfooの有無で分岐させるのですがとりあえずpauseで書いてます.

  418 :デフォルトの名無しさん:2019/10/19(土) 00:21:50.04 ID:nJ40H8MU
  >>417
  (for /f %%i in ('dir /b^|find "foo"') do pause) || pause

  419 :デフォルトの名無しさん:2019/10/19(土) 00:29:35.02 ID:lUUAms6Y
  >>418
  ありがとう, できたらfor内で分岐したい・・・.

  420 :デフォルトの名無しさん:2019/10/19(土) 00:34:28.69 ID:nJ40H8MU
  forのループは条件が一致しないとすり抜けて.
  1回も通らないで次のステートメントにいっちゃうから無理.
  無理矢理やろうとすると, ダミー項目を与えて必ず一度はforループを実行するようにして.
  その中でダミー項目だったら~と条件判定することになる.

  421 :デフォルトの名無しさん:2019/10/19(土) 00:43:02.67 ID:nJ40H8MU
  こんな感じ.
  for /f %%i in ('dir /b^|find "foo"^|^|echo none') do (if "%%i"equ "none" echo
  ありません)

  422 :デフォルトの名無しさん:2019/10/19(土) 00:49:42.45 ID:nJ40H8MU
  俺としては>>418の方が見やすくて間違いが少なくて済むと思う.

  423 :デフォルトの名無しさん:2019/10/19(土) 01:05:43.14 ID:lUUAms6Y
  なるほど||つかう手もあるんですね.
  for入れ子にしてるから||でいきますありがとう.

  424 :デフォルトの名無しさん:2019/10/19(土) 01:26:01.92 ID:nJ40H8MU
  forの後で, %errorlevel%で判断できるかと思ったけど.
  forのコマンドは子タスクで実行されるから環境を親タスクに引き継がないんだね.
  こういうことはパイプの右側でも起きるけど.

  425 :デフォルトの名無しさん:2019/10/19(土) 07:15:14.93 ID:azMLqhGk
  for /f "delims=" %%i in ('dir/b *foo* 2^>nul ^|^| echo *')do (
  if "%%~i"=="*" (echo ないよ) else echo %%i
  )

  426 :デフォルトの名無しさん:2019/10/20(日) 07:21:20.34 ID:bUbbfXYV
  for /f "delims=" %%i in ('"dir/b *foo* 2>&1"')do if not exist %%i echo %%i

  427 :デフォルトの名無しさん:2019/10/21(月) 18:09:26.80 ID:8RixcIVS
  なんか古代呪文を撃ちあってるみたい(^_^;)

  428 :デフォルトの名無しさん:2019/10/21(月) 21:05:31.60 ID:Sv6Oxatw
  そう, 実は, 古代語魔術(ハイエンシェント)を打ち合っているのです.
  スレ違いだけれど,
  魔法の使い方.
  https://eman-physics.net/columns/magic.html
  を, 思い出した.

  429 :デフォルトの名無しさん:2019/10/21(月) 22:05:11.02 ID:nEQALG6h
  ザイログニーモニックは忘れた.

  430 :デフォルトの名無しさん:2019/10/22(火) 23:09:34.31 ID:jiuE9ZBi
  詠唱せよ.

  431 :デフォルトの名無しさん:2019/10/27(日) 14:29:49.16 ID:Lik42TLZ
  cmd. exe /c start ってネットワークドライブのファイル開けないんでしたっけ?
  cmd. exe /c start t:\test.txt ってやると.
  アクセスが拒否されました. って表示される. c:\以下なら大丈夫.
  cmd. exe /c start file:\\t:\test.txt ってやれば開けるからいいんだけど.

  432 :デフォルトの名無しさん:2019/10/27(日) 19:40:17.02 ID:n+Gkmfbl
  cmd /c start t:\test.txt
  と.
  start t:\test.txt
  の違いは?

  433 :デフォルトの名無しさん:2019/10/27(日) 19:45:47.81 ID:QHyOIS3t
  startが内部コマンド.

  434 :デフォルトの名無しさん:2019/10/27(日) 19:54:44.57 ID:n+Gkmfbl
  なんで cmd /c が必要?

  435 :デフォルトの名無しさん:2019/10/27(日) 22:46:50.23 ID:8uvk7ayg
  >>434
  ぐぐれかす.

  436 :蟻人間@T6xkBnTXz7B0 - :2019/10/27(日) 23:17:38.75 ID:cNZwDfUU
  >>434
  内部コマンドは実行可能なモジュールではなく, cmd内部でのみ実行可能だから.
  内部コマンドはcmdで解釈・実行される.

  437 :デフォルトの名無しさん:2019/10/28(月) 01:22:07.40 ID:YqbFbBrf
  >>434
  バッチでは cmd /c は不要ですね.
  cmd /c があれば子プロセスになります.
  どっちも結果は同じ. エディタが起動します.
  「ファイル名を指定して実行」の入力なら,
  cmd /c start は不要かと思います.
  でも, あっても間違いではないです.

  438 :デフォルトの名無しさん:2019/10/28(月) 02:10:13.65 ID:t0sY5Haq
  そんなこと聞いてないから, >>431に答えてくれ.

  439 :438:2019/10/28(月) 02:18:17.09 ID:bqlyCkZ6
  ネットワークフォルダをドライブに割り当てた問題かと思えば.
  関係なさそうだ. でも不思議だ.
  cmd. exe /c start \\server\folder だとフォルダが開ける.
  cmd. exe /c start \\server\folder\subfolder でも問題ない.
  cmd. exe /c start \\server\folder\test.txt だとアクセスが拒否される.
  でもエクスプローラーのアドレスバーに [上矢印] を入れるとメモ帳で開ける.

  440 :デフォルトの名無しさん:2019/10/28(月) 03:05:07.76 ID:ML+fUsJB
  管理者権限でやってみては?

  441 :438:2019/10/28(月) 03:54:57.58 ID:bqlyCkZ6
  アクセスが拒否されました.

  442 :デフォルトの名無しさん:2019/10/28(月) 07:04:53.54 ID:YqbFbBrf
  >>438  すみません. 私には分かりません.
  cmd/c を省略, さらに start を省略しても同じアクセス拒否ですか?

  443 :デフォルトの名無しさん:2019/10/28(月) 08:16:04.60 ID:kjzN6NI8
  >>439
  >cmd. exe /c start \\server\folder\test.txt だとアクセスが拒否される.
  >でもエクスプローラーのアドレスバーに [上矢印] を入れるとメモ帳で開ける.
  このコマンドには, メモ帳を起動すると書いていないから, 起動できないだろ.
  拡張子から, 起動するアプリを取得できないだろ?
  そういう情報は, レジストリに入っているから,
  バッチファイルから, そこへアクセスできるか?

  444 :443:2019/10/28(月) 08:20:10.88 ID:kjzN6NI8
  普通に「notepad パス付きファイル名」なら, 起動できるだろ?

  445 :デフォルトの名無しさん:2019/10/29(火) 07:53:25.61 ID:SHkVBveq
  >>439
  エクスプローラーのバーに書くのも cmd/c start は要らんぞ.

  446 :デフォルトの名無しさん:2019/10/29(火) 11:55:42.58 ID:w4Uxvw1j
  >>443
  バッチからでも関連付け起動できるぞ.

  447 :デフォルトの名無しさん:2019/10/29(火) 12:51:26.56 ID:SHkVBveq
  file:\\C:\Program Files (x86)\TeraPad\TeraPad.exe
  >>446
  >>443 は.txtの関連付けはメモ帳とは限らんと言ってる.
  notepad.exe がネットワークドライブのファイル名を処理できるかは知らんが.
  notepad file:\\t:\test.txt
  みたいなのではダメだろうな.
  start file:\\t:\test.txt
  なら良さそうだが.

  448 :デフォルトの名無しさん:2019/10/29(火) 12:53:59.00 ID:SHkVBveq
  ああ1行目にゴミが付いたw  無視してくれ.

  449 :デフォルトの名無しさん:2019/10/29(火) 13:09:40.06 ID:YQKoC2Uo
  コマンドプロンプトの文字コードがよくわからん.
  なんでchcp 932なのにUnicodeが表示できてるんだ?
  chcpの設定とは無関係に画面はUnicodeで変換してるんか?

  450 :デフォルトの名無しさん:2019/10/29(火) 13:26:49.20 ID:SHkVBveq
  バッチはSJIS
  リダイレクトするとSJIS
  画面はユニコード.
  set はユニコード特有文字でも入る(cmd画面で入力なら)
  cmdの内部処理はユニコード.

  451 :デフォルトの名無しさん:2019/10/29(火) 13:34:20.85 ID:spBBwL/I
  Unicodeはいいが文字コードは何なんだ?
  UTF-8なのか?UTF-16なのか?

  452 :デフォルトの名無しさん:2019/10/29(火) 13:37:09.01 ID:SHkVBveq
  16

  453 :デフォルトの名無しさん:2019/10/29(火) 13:40:11.15 ID:spBBwL/I
  >>452
  と思うやろ?
  typeコマンドは文字コード変換してるかもしれんなと思って.
  copy ファイル名 CON なら, そのまんま表示されるだろうと.
  思ってやってみたら,
  UTF-8は問題なく表示されて, UTF-16は文字化けしてるんだよ.
  Windows 10で仕様でも変わったんか?

  454 :デフォルトの名無しさん:2019/10/29(火) 13:47:51.80 ID:SHkVBveq
  変わらず.
  後は自分で調べろ.

  455 :デフォルトの名無しさん:2019/10/29(火) 13:53:47.92 ID:spBBwL/I
  わからんのかーい. w.

  456 :デフォルトの名無しさん:2019/10/29(火) 14:01:37.87 ID:SHkVBveq
  図に乗るな.

  457 :デフォルトの名無しさん:2019/10/29(火) 14:15:50.84 ID:spBBwL/I
  やっぱり仕様が変わってた.
  Windows 7だとchcp 932の時,
  copy test.txt CON で正しく表示できるのはShiftJISだけ.
  UTF-8でもUTF-16LEでも文字化けする.
  Windows 10だと逆に, UTF-8(BOMなし), UTF-16LEは.
  正しく表示できるが, ShiftJISは文字化けする.

  458 :デフォルトの名無しさん:2019/10/29(火) 14:23:41.56 ID:SHkVBveq
  そうなのか.
  でも内部が16だと思うが.
  分からん.

  459 :デフォルトの名無しさん:2019/10/29(火) 14:27:54.02 ID:spBBwL/I
  Windows 7でもdirコマンドでShiftJISにない文字は表示できてるから.
  最終的にはUnicodeなんだろう(おそらくUTF16だと思うが)
  その途中になんかあるんだろうな.
  Windows 10でcopy CONつかってるのに, UTF-8とUTF-16の両方が.
  文字化けしないのが不思議だ・・・って思ったら,
  あれ?UTF-16文字化けしてた. んん?間違ってtypeで表示してたか.
  これなら理解できる.

  460 :デフォルトの名無しさん:2019/10/29(火) 14:44:03.37 ID:XkpxJQc3
  >>457
  いつのWindows10だね?

  461 :デフォルトの名無しさん:2019/10/29(火) 14:52:33.20 ID:spBBwL/I
  >>460
  今の最新の公式リリース.

  462 :デフォルトの名無しさん:2019/10/29(火) 14:56:43.68 ID:spBBwL/I
  なんかわかりづらくなったので再掲.
  copy test.txt CONで検証.
  Windows7, chcp 932・・・text.txt が ShiftJIS だと正しく表示される.
  Windows10, chcp 932・・・text.txt が UTF-8(BOMなし) だと正しく表示される.

  463 :デフォルトの名無しさん:2019/10/29(火) 16:52:33.42 ID:spBBwL/I
  なんかいろいろ勘違いしてたっぽい.
  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));
  }

  464 :デフォルトの名無しさん:2019/10/29(火) 17:46:22.44 ID:4a4kNF+Q
  一つわかった気がする.
  コマンドプロンプトはUnicode対応してるけどバッチファイルはUnicode対応じゃないんだ.
  (正確にはchcp 65001を実行すれば, UTF-8のバッチファイルを実行できる)
  だからchcp 932のままコマンドプロンプトでUnicode文字を使うことができるけど.
  バッチファイルにするとそれができない.

  465 :デフォルトの名無しさん:2019/10/29(火) 17:46:59.43 ID:wQOUEDyj
  テキストストリームだけしか通さないから何らかの変換が入ってるのかも知れないね.
  copy /b hoge.txt con
  指定されたデバイスに書き込めません.
  0 個のファイルをコピーしました.

  466 :デフォルトの名無しさん:2019/10/29(火) 18:03:33.66 ID:4a4kNF+Q
  あ, copyに/bオプションなんてあったのか・・・.

  467 :デフォルトの名無しさん:2019/10/29(火) 18:10:48.74 ID:4a4kNF+Q
  そんな馬鹿な・・・. Windows 10でもShiftJISじゃないと表示されなくなっただと?
  何度も確認したはずだぞ???

  468 :デフォルトの名無しさん:2019/10/29(火) 18:37:30.30 ID:tLCpEMn0
  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/

  469 :デフォルトの名無しさん:2019/10/29(火) 19:04:08.72 ID:SHkVBveq
  少し前にここで同様の話題が有ったが UTF-8(BOM無し) のテキストは.
  たとえ chcp 65001 しても type で一部分文字化けする.
  findstr ^^ foo.txt
  で正常に表示されるはず(chcp 65001 で)

  470 :デフォルトの名無しさん:2019/10/29(火) 19:08:30.96 ID:SHkVBveq
  あと chcp 65001 しても UTF-8 のバッチは.
  正常に動作しないと思った方がいい.

  471 :デフォルトの名無しさん:2019/10/29(火) 20:31:39.34 ID:ltL5L5Cn
  あぁ, クソ. 意味がわからんけど, 理由がわかった.
  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がなにかコマンドプロンプトの状態を変えてやがる.
  なんだこれ?コマンドプロンプトに英語モードとかあったっけ?

  472 :デフォルトの名無しさん:2019/10/29(火) 20:34:10.83 ID:ltL5L5Cn
  コマンドプロンプトを起動するのは2の時の間違いな.

  473 :デフォルトの名無しさん:2019/10/29(火) 20:38:52.72 ID:ltL5L5Cn
  この話から気づくと思うけど,
  powershell -Command [Console]::OutputEncoding
  初期状態は, 日本語 (シフト JIS)
  powershell -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
  これでUTF-8に変更して.
  powershell -Command [Console]::OutputEncoding
  現在の設定を確認すると, UTF-8になってる.
  chcpの値は変わらんのに, コードページを変えることができてしまっているかのようだ.

  474 :デフォルトの名無しさん:2019/10/29(火) 21:33:51.82 ID:ltL5L5Cn
  Windows 7にPowerShell6をインストールしてやってみたけど,
  pwsh -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 で.
  コードページが変わるな. Windows 7はまともに動かないので画面がバグる. w.

  475 :デフォルトの名無しさん:2019/10/29(火) 21:41:58.40 ID:ltL5L5Cn
  なるほど, SetConsoleOutputCPでコマンドプロンプトのコードページを変更できるらしい.
  http://tooljp.com/language/C-Languate/sample-code/SetConsoleOutputCP-sample-code.html

  476 :デフォルトの名無しさん:2019/10/30(水) 07:47:21.02 ID:WNRoeYsC
  おれもコードページ弄って色々やったが上手くいかなかった.
  typeは一部ダメ, moreは全くダメ, findstrはリダイレクトするとダメ,
  copy~conは utf-7とjis が一部ダメ,
  for~do echoでやると空行が抜けてダメという具合.

  477 :デフォルトの名無しさん:2019/10/30(水) 08:50:12.52 ID:BvOaIOcB
  エディタがあれば必要ない.

  478 :デフォルトの名無しさん:2019/10/30(水) 11:07:44.00 ID:iT3/p0k9
  >>476
  なんとなく画面に表示する部分にバグがあるから.
  バッチファイル内で閉じて画面に表示しなければ, chcp 65001で動くような気がする.
  あとWindows 10ではそこらへんが直ってるので同じように考えるのは早計.

  479 :デフォルトの名無しさん:2019/10/30(水) 11:25:55.22 ID:iT3/p0k9
  Windows 7でこれが文字化けせずに動いた.
  chcpで画面はクリアされるが, 正しく出力される.
  [下矢印]UTF8 + CRLFで作成.
  @echo off
  chcp 65001
  set A=ユニコード文字.
  chcp 932
  echo %A%

  480 :デフォルトの名無しさん:2019/10/30(水) 12:04:53.93 ID:BvOaIOcB
  >>262 みたいのは今でも化けるね.
  >>476 はWindows10だと思う.
  どっちにしろ不具合を把握しとくのは大事だね.

  481 :デフォルトの名無しさん:2019/10/30(水) 12:11:59.20 ID:n2bLSC2q
  chcp 65001 にしてもcmd /u で開き直さなきゃバグるんじゃない?

  482 :デフォルトの名無しさん:2019/10/30(水) 12:17:27.39 ID:4eNYSN+t
  chcpやってモード変更したとしても.
  既に開いたハンドルは開いたときのモードのままだろうからね.

  483 :デフォルトの名無しさん:2019/10/30(水) 12:27:14.70 ID:iT3/p0k9
  >>480
  化けると言うよりか, 文字の終わりを正しく認識できてない感じ.
  これならうまくいく.
  まずchcpをifの()内でやるとおかしくなる.
  その上でsetする文字をダブルクォートでくくらなかったらおかしくなった.
  なのでダブルクォートくくって, 出力時に外してる.
  @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

  484 :デフォルトの名無しさん:2019/10/30(水) 12:29:13.59 ID:iT3/p0k9
  ちなみに >>483 はchcp65001した状態でバッチファイルを実行すれば.
  バッチファイルの中でchcpせずに動く.
  あとファイルの文字コードはUTF8な.

  485 :デフォルトの名無しさん:2019/10/30(水) 12:32:44.17 ID:iT3/p0k9
  >>482
  そうとは限らない.
  chcpはどうやら内部でSetConsoleOutputCPを呼び出してるんだろうけど.
  SetConsoleOutputCPっていうのはConsole APIの一つで,
  コマンドプロンプトのコードページを変更する.
  このAPIは子プロセスから親プロセスをたどって見つけた.
  コンソール(コマンドプロンプト)のコードページを変更できる.
  ハンドルのモードは関係なく, コンソールのコードページの話.

  486 :デフォルトの名無しさん:2019/10/30(水) 12:38:00.67 ID:iT3/p0k9
  >>252の改良でこれならうまく動くんだよな.
  ダブルクォートはいるけど.
  あとecho あああa みたいに最後をASCII文字にしても動く.
  @echo off
  chcp 65001
  if "hoge"=="hoge" (
  echo "あああ"
  echo "いいい"
  )

  487 :デフォルトの名無しさん:2019/10/30(水) 12:45:45.44 ID:iT3/p0k9
  こうすりゃいいのか. w.
  @echo off
  chcp 65001
  if "hoge"=="hoge" (
  call :echo "あああ"
  call :echo "いいい"
  )
  exit /b
  :echo
  echo %~1

  488 :デフォルトの名無しさん:2019/10/30(水) 12:46:49.70 ID:iT3/p0k9
  まあバッチファイルでchcp 65001を使うのはやめたほうがいいと思うけど.
  ワークアラウンドでどうにか対応できなくはないかもしれない. w.

  489 :デフォルトの名無しさん:2019/10/30(水) 13:25:11.54 ID:iT3/p0k9
  上の方でcmdがだめならPowerShellを使えばいいじゃないみたいなことが書いてあるけど,
  UTF8の出力に関しては, コンソールの問題だから.
  Windows 7, 8.1 ではPowerShellでもバグるんだよな.
  Windows 7にPowerShell6を入れてみたが, デフォルトで.
  「あいう」というファイル名が「ああいいうう」と表示される上に.
  [Console]::OutputEncoding = [Text.Encoding]::UTF8 すると.
  出力できませんみたいなエラーが発生する. w.
  つまりWindows 7+PowerShell6だと日本語ファイル名は正しく表示されない.
  標準搭載のPowerShell 2なら問題ないんだけどね.

  490 :デフォルトの名無しさん:2019/10/30(水) 13:41:42.20 ID:zJjGNXoj
  それは.
  >これは, $OutputEncoding が Default だと US-ASCII になっているので, S-JIS
  文字列を渡そうとしてもリダイレクト時に日本語がうまく扱えないからです.
  >結論から言うと, $OutputEncoding を S-JIS に変更して clip.exe にリダイレクトすれば文字化けしません.
  これが関係するのかな?

  491 :デフォルトの名無しさん:2019/10/30(水) 13:53:29.35 ID:ecgQNQwo
  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)を渡せないのだけれど,
  どうしたらいいですか?

  492 :デフォルトの名無しさん:2019/10/30(水) 13:53:40.11 ID:iT3/p0k9
  どこの記事だよw まあググったが.
  https://www.vwnet.jp/Windows/PowerShell/CharCode.htm

  493 :デフォルトの名無しさん:2019/10/30(水) 14:08:53.46 ID:iT3/p0k9
  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では.
  ?になるのにたいしてこっちは文字化けする.

  494 :デフォルトの名無しさん:2019/10/30(水) 14:13:56.47 ID:iT3/p0k9
  ここはPowerShellのスレじゃないんだが. w.
  $OutputEncoding と [Console]::$OutputEncoding は別もんなんか!?
  [Console]は[Console]::WriteLine とか使うときだけかな?

  495 :デフォルトの名無しさん:2019/10/30(水) 14:16:01.69 ID:n2bLSC2q
  >>491
  "usebackq delims="

  496 :デフォルトの名無しさん:2019/10/30(水) 14:21:07.12 ID:iT3/p0k9
  [Console]::OutputEncoding と $OutputEncoding の.
  両方を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

  497 :デフォルトの名無しさん:2019/10/30(水) 14:22:18.15 ID:iT3/p0k9
  なぜか書き込みにゴミが入った・・・.
  * 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

  498 :デフォルトの名無しさん:2019/10/30(水) 14:24:19.49 ID:ecgQNQwo
  >>495
  あら, そんなことだったんだ.
  どうもありがとう.

  499 :デフォルトの名無しさん:2019/10/30(水) 14:27:47.60 ID:iT3/p0k9
  [Console]::OutputEncoding は chcp 相当のことをしていて,
  コンソールのコードページを変更しているのに対して,
  $OutputEncoding は出力の文字コード変換の制御をしてるっぽい.

  500 :デフォルトの名無しさん:2019/10/30(水) 14:46:57.29 ID:iT3/p0k9
  [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 へのリダイレクトもね)
  http://www.vwnet.jp/Windows/PowerShell/CharCode.htm
  とかは, コンソールのコードページを変更してない=デフォルトのcp932状態で.
  echoしてるから入力がcp932, そしてデフォルトの$OutputEncoding=US-ASCIIで.
  文字化けするから(入力と同じ)cp932で出力しましょうねって話なんだと思う.
  Windows 10以前は, コンソールのコードページ65001にバグが有って.
  使い物にならなかったけど, Windows 10で修正されたから.
  コードページ65001でコマンドプロンプトもPowerShellも正しく動くようになったんだと思う.
  (ただしこれは画面出力の問題であって, UTF8でバッチファイルを書いた時のパース処理は別の話)

  501 :デフォルトの名無しさん:2019/11/02(土) 13:44:45.56 ID:+w7z2z4x
  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

  502 :デフォルトの名無しさん:2019/11/02(土) 14:20:34.65 ID:+UvDifof
  !hatebu バッチファイル.
  !qiita バッチファイル.

  503 :デフォルトの名無しさん:2019/11/03(日) 23:33:41.85 ID:/0rS8sv9
  質問なのですが, 以下の内容を実行するバッチプログラムを作りたいのですが, どなたかご教示頂けないでしょうか.
  Cドライブにある「A, B, C, D」という4つのフォルダとサブフォルダの中身全部を,
  Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが, コピーする際以下の条件があります.
  1. フォルダが1つしかない場合, その中だけにコピーする.
  2. フォルダが複数ある場合は, それぞれのフォルダに1. と同様にコピーする.
  宜しくお願いします.

  504 :デフォルトの名無しさん:2019/11/03(日) 23:37:03.86 ID:Xh3slsXc
  >>503
  自分で作ってください.

  505 :デフォルトの名無しさん:2019/11/04(月) 09:25:52.62 ID:0uHh5Wp4
  宜しくお願いします. と書けば誰かがやってくれるとでも?
  xcopy robocopy move for if set call dir findstr
  この辺使えりゃ出来るから自分で調べろ.
  "バッチ バックアップ" とかでググれば腐るほど例が出るだろ.

  506 :デフォルトの名無しさん:2019/11/04(月) 13:01:25.95 ID:Zu03xGz4
  >>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 を使うとか.

  507 :デフォルトの名無しさん:2019/11/04(月) 13:46:43.19 ID:UHaJ6Kuw
  > Ruby で, クリップボード内の複数行文字列の, 各行の先頭・末尾から,
  > str = `powershell Get-Clipboard`
  Rubyでできないなら, もう全部powershellで書いちゃえよ. w.

  508 :506:2019/11/04(月) 15:48:40.94 ID:Zu03xGz4
  >>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

  509 :デフォルトの名無しさん:2019/11/04(月) 22:13:40.62 ID:mdzUzifN
  >>505 >>508
  有難うございます.
  それらでググって調べてやってみます.

  510 :デフォルトの名無しさん:2019/11/05(火) 12:51:32.26 ID:3/4kxzup
  >>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

  511 :デフォルトの名無しさん:2019/11/05(火) 18:52:56.56 ID:ykrQtfUP
  >>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

  512 :デフォルトの名無しさん:2019/11/05(火) 20:10:31.32 ID:3/4kxzup
  多分 %%~fd やね.

  513 :デフォルトの名無しさん:2019/11/05(火) 20:28:07.61 ID:ykrQtfUP
  %%dだけでフルパスになるから~fは不要.

  514 :デフォルトの名無しさん:2019/11/05(火) 20:42:07.32 ID:3/4kxzup
  そうか失礼いたしました.

  515 :デフォルトの名無しさん:2019/11/05(火) 20:50:46.27 ID:kqXSHliE
  火[22]義母と娘ブルース
  11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)________14.15
  これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって,
  その時点での相加平均値を表示してくれるバッチファイルってできますか?
  INPUTを使うのかな.
  あと, ウィンドウを開いている間生きている変数ってファイルへの格納, 取り出しって.
  そんな面倒なことしてるなら表計算ソフトでも使えってか.

  516 :デフォルトの名無しさん:2019/11/05(火) 21:30:33.42 ID:HPnxYMOW
  >>515
  出来なくはないけれど set /a では整数しか扱えずバッチのみでやるのは面倒.
  やるならPowerShell とか wsh, js かな.
  単に平均出すだけなら電卓アプリの方が楽.

  517 :デフォルトの名無しさん:2019/11/05(火) 22:38:05.69 ID:aoMnc07l
  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ならこうかな?

  518 :デフォルトの名無しさん:2019/11/06(水) 01:50:43.91 ID:ZR40S1lI
  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 # 合計 / 要素数.

  519 :デフォルトの名無しさん:2019/11/06(水) 03:37:02.69 ID:sEBZ5Hrs
  スレタイも読めないメクラか?
  ドヤりたいなら該当スレへ逝け.

  520 :デフォルトの名無しさん:2019/11/06(水) 15:19:13.85 ID:Z1XrM+Fl
  :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

  521 :デフォルトの名無しさん:2019/11/06(水) 15:48:22.56 ID:Z1XrM+Fl
  set /p N%i%=数値を入力 :
  if not defined N%i% (echo 入力無効 &goto :INPUT)
  echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto:INPUT)
  上のに真ん中の行追加で.

  522 :デフォルトの名無しさん:2019/11/06(水) 20:50:16.92 ID:wTTuQQRz
  バッチファイルは難しすぎ!
  引数の概念がLinuxと全く違う.

  523 :デフォルトの名無しさん:2019/11/06(水) 23:04:29.95 ID:wTTuQQRz
  空白が入ったパスをバッチファイルにわたすために.
  ダブルクォートで括らないといけないが,
  それをやると, 変数にダブルクォートが入るのがクソなんだな.
  しかも, if "%1" == "" とか書くと, 引数がダブルクォート.
  一個だったときにエラーが出るとかいろいろ破綻してる.

  524 :デフォルトの名無しさん:2019/11/07(木) 01:48:00.01 ID:4r3ojeSB
  >>522
  難しすぎというよりは適当仕様すぎ.
  仕様を安易に何回も拡張した, 増築して迷路化した老舗旅館.

  525 :デフォルトの名無しさん:2019/11/07(木) 04:42:48.88 ID:nSoHFrko
  >>511
  @for %%s 以下略じゃダメなの?

  526 :デフォルトの名無しさん:2019/11/07(木) 06:29:37.44 ID:lb8cogBR
  >>525
  それならdoの後のforとxcopyにも@付けろ.
  何でも一行にすりゃいいわけじゃないがな.

  527 :デフォルトの名無しさん:2019/11/07(木) 06:59:41.26 ID:LFqMQC4+
  >>523
  %~1で外せるでしょ?

  528 :デフォルトの名無しさん:2019/11/07(木) 07:54:19.69 ID:isVFtAa0
  >>520さんありがとうございます.
  "これこそが私の求めていたものだ"
  そんな慣用句?ローマの名文句?ってあったっけと思ってしまいますた.
  000と00の入力処理で使いやすくなっているのがセンスというか実際の使用を考えた親切な仕様だなと思います.
  訂正できるのは本当に便利だ.
  VBSとRubyで書いてくださった>>517さんと>>518さんにも感謝.
  自分の要求仕様がどう解釈・解決されるのか勉強になります.

  529 :デフォルトの名無しさん:2019/11/07(木) 09:58:22.71 ID:d6TMJd25
  >>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 で空入力しても 空で上書き初期化されずそのまま残るみたい.

  530 :デフォルトの名無しさん:2019/11/07(木) 10:37:33.42 ID:sEmiRyTj
  >>527
  どこ見てもその程度. みんな適当なんだよな.
  まず最初に書いた例から. バッチファイル(test.bat)を.
  1. このように書いた時.
  if "%1" == "" echo 引数なし.
  > test.bat "
  コマンドの構文が誤っています.
  2. このように書いた時.
  if "%~1" == "" echo 引数なし.
  > test.bat "
  引数なし.
  [*] [上矢印]間違い. 「"」という引数があります.
  3. このように書いた時.
  if %~1 == "" echo 引数なし.
  > test.bat "
  echo の使い方が誤っています.

  531 :デフォルトの名無しさん:2019/11/07(木) 12:19:13.92 ID:Z6Qb1qTa
  Windowsバッチの仕様がダメダメというのはそのとおりだが,
  引数が " だけというのは, かなり特殊な想定だよな.
  これが大丈夫という言語ってあるのか?
  この場合とは違うが, 外部アプリから""でくくったパスなどを渡してもらうときは,
  アプリの方で, \"~\"で吐き出すように設定して,
  バッチファイルで, この\を削除するようにすることで,
  引数展開でおかしな動作をさせないようにしている.
  e.g. fxのOpenWithアドオンなど.

  532 :デフォルトの名無しさん:2019/11/07(木) 12:32:04.92 ID:sEmiRyTj
  >>531
  言語関係ない. コマンドプロンプトの仕様だから.
  例えばechoでダブルクォートだけを出力したいなら.
  echo " と書くしか無い.
  PowerShellとかコマンドプロンプトを使わないなら.
  閉じてないダブルクォートの扱いを変えることは可能だが,
  コマンドプロンプトはもうどうしようもない. w.
  そしてこれ(もともとはMS-DOSの仕様)を前提に.
  Windows版のC言語とかのCRTライブラリが作られ,
  mainに渡る前に, そういう文字列を解釈するようになってる.

  533 :デフォルトの名無しさん:2019/11/07(木) 12:33:31.15 ID:sEmiRyTj
  > この場合とは違うが, 外部アプリから""でくくったパスなどを渡してもらうときは,
  > アプリの方で, \"~\"で吐き出すように設定して,
  いきあたりばったりなんだよな. w.
  本当にここらへんの奴らは適当.

  534 :デフォルトの名無しさん:2019/11/07(木) 12:40:37.56 ID:sEmiRyTj
  https://thinca.hate
  nablog.com/entry/20100210/1265813598
  \ は,
  ダブルクォートの内外を問わず, " の前に \ を前置すると " 自身を表現できる.
  \\" とすると \" の \ をエスケープしたことになり, \" になる. この " は特殊文字である.
  \\\" とすると \\ + \" になり, \" になる. この " は " 文字自身である.
  以下, \ が増える度に上記のようなエスケープを繰り返す.
  \\\\" -> \\" (" は特殊文字)
  \\\\\" -> \\" (" は通常文字)
  上記以外の場所にある \, つまり後に " が続かない \ は, いくつ重なっていてもその文字自身になる.

  535 :デフォルトの名無しさん:2019/11/07(木) 12:53:05.11 ID:LDERshfw
  >>528
  バッチ/シェルスクリプトは, 複雑なプログラミングをするものじゃない!
  Ruby, PowerShell, VBScript などを使うべき.
  まず, データの仕様を作るべき.
  その程度のデータなら, 普通は, CSV 形式とか.
  1. どこかのサイトから, データの集積物を取得する.
  2. それをパースして, CSV 形式に変換する.
  一旦, CSV へ変換すれば,
  その後は, Rubyなど, 様々なプログラミング言語で処理できる.
  1の部分は, Ruby, Selenium WebDriver などで, クローラー・スクレイピングも出来る.

  536 :デフォルトの名無しさん:2019/11/07(木) 12:58:16.29 ID:lb8cogBR
  >>531
  まったくスレチだけどGnuPGのパスワードを思い出した.
  引用符だけのパスワードを渡す場合は.
  pass "
  >gpg -c --passphrase ^""" hoge.txt
  pass ""
  >gpg -c --passphrase """""" hoge.txt
  pass """
  >gpg -c --passphrase ^"""""""""hoge.txt
  何でこうなるかは知らんがGnuPGだけの話さ.
  コマンド側でどう引数処理するかだよな.
  バッチでは普通ダメだね.

  537 :デフォルトの名無しさん:2019/11/07(木) 13:04:39.19 ID:sEmiRyTj
  ダブルクォートを"""と3個やっても動かないときは,
  """" に増やして動くか.
  """"" に増やして動くか.
  """"" に増やして動くか.
  これぐらいまで試す.
  あるある.

  538 :デフォルトの名無しさん:2019/11/07(木) 13:26:56.23 ID:Z6Qb1qTa
  >>536
  クォートの先頭にエスケープが必要な場合でも,
  後ろの方は何故かエスケープが不要なことがあるんだよな.
  *nix系から移植したプログラムで, こういう事がたまに起きる.
  いずれにしても, 謎仕様・・・.

  539 :デフォルトの名無しさん:2019/11/08(金) 05:39:07.91 ID:78hADO4V
  set x=echo
  %x% qqq
  set a=y
  set %a%=3
  echo %y%
  どちらもできた.

  540 :デフォルトの名無しさん:2019/11/09(土) 12:37:18.78 ID:9Z+ynpem
  もう無理だ. w.
  if "%value%" == "" echo match
  こんな感じのコードで, %value% にどんな文字.
  (ダブルクオート, スペース, カンマ, その他記号)が.
  入っていてもエラーにならないというコードを.
  バッチファイルで書くのは不可能だ. w.
  お手上げ. \(-o-)/

  541 :デフォルトの名無しさん:2019/11/09(土) 12:55:41.49 ID:hmJLHo7y
  IF NOT DEFINED VALUE

  542 :デフォルトの名無しさん:2019/11/09(土) 13:02:21.70 ID:9HGwW/1Y
  >>541
  あ, ごめん. 実際は右側, 値が入ってる.
  if "%value%" == "abc" echo match

  543 :デフォルトの名無しさん:2019/11/09(土) 13:03:25.05 ID:hmJLHo7y
  setlocal enabledelayedexpansion
  if "!value!"=="abc" echo match
  endlocal

  544 :デフォルトの名無しさん:2019/11/09(土) 13:14:34.88 ID:9HGwW/1Y
  あれ?マジで?それだけでいけちゃうの?

  545 :デフォルトの名無しさん:2019/11/09(土) 13:22:47.16 ID:hmJLHo7y
  これな, "abc"の方が要注意なんよ.
  ^とか!とか入ってるとやばいかも.
  setlocalの前に代入して.
  if !a!==!b! とかやった方がええかもな.

  546 :デフォルトの名無しさん:2019/11/09(土) 13:53:03.27 ID:9HGwW/1Y
  >>545
  右側, 固定値なら大丈夫だよね?

  547 :デフォルトの名無しさん:2019/11/09(土) 14:00:20.08 ID:hmJLHo7y
  うん多分, 変な文字入って無けりゃね.
  遅延モードだと全角文字のリテラルにも一部副作用が有るかも.

  548 :デフォルトの名無しさん:2019/11/09(土) 14:07:53.35 ID:9HGwW/1Y
  なんだよ, 全角文字の副作用って・・・.
  せっかく進んだのに. w.

  549 :デフォルトの名無しさん:2019/11/09(土) 14:15:55.11 ID:hmJLHo7y
  setlocalの外で代入すりゃ問題ない.
  遅延の中では書くな.
  あと, if !a!==!b! に " はたぶん不要.

  550 :デフォルトの名無しさん:2019/11/09(土) 14:26:55.47 ID:9HGwW/1Y
  setlocalの中で代入するとなにか問題があるのか・・・.

  551 :デフォルトの名無しさん:2019/11/09(土) 14:37:46.76 ID:hmJLHo7y
  ええと.
  setlocal enabledelayedexpansion ~ endlocal の中だよ.

  552 :デフォルトの名無しさん:2019/11/09(土) 15:15:35.38 ID:hmJLHo7y
  >>550
  すまん. おれの勘違いだった.
  全角文字は関係無かった. 無視してください.
  でも^や!は要注意だけど.

  553 :デフォルトの名無しさん:2019/11/09(土) 17:06:16.41 ID:hmJLHo7y
  でもif文自体が挙動不審だからなあ.
  if "----"=="""" echo 同じ.

  554 :デフォルトの名無しさん:2019/11/09(土) 20:49:07.09 ID:9HGwW/1Y
  >>553
  ShiftJISだとだめだけど, バッチファイルをUTF8で保存したら大丈だったよ!
  ただし, それでも引数で渡すとダメだったけど. www.

  555 :デフォルトの名無しさん:2019/11/09(土) 20:57:33.36 ID:9HGwW/1Y
  >>553
  それも enabledelayedexpansion 使えば大丈夫じゃない?
  setlocal enabledelayedexpansion
  set A=%1
  if !A! == "" echo 同じ.
  もうやだこの言語(?)

  556 :デフォルトの名無しさん:2019/11/09(土) 21:14:31.85 ID:9HGwW/1Y
  @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.

  557 :デフォルトの名無しさん:2019/11/09(土) 21:24:41.89 ID:9HGwW/1Y
  @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.
  これ人間が制御できるものなんか?

  558 :デフォルトの名無しさん:2019/11/10(日) 09:44:25.06 ID:fP398yW4
  setlocal enabledelayedexpansion は >>540対策で使えるけど,
  それ以外はもっと制御が難しいかも・・・.
  基本は通常のsetlocalで比較のときだけ.
  部分的に使ったほうが良さそう.
  今回は頑張ったけど, もうやらない.

  559 :デフォルトの名無しさん:2019/11/10(日) 15:37:42.63 ID:noq81T2Q
  スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる.

  560 :デフォルトの名無しさん:2019/11/10(日) 20:23:39.65 ID:u8+xJCBj
  for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で.
  for %%i in (a b c) みたいにワイルドカードが含まれてない場合は.
  ファイルがあるなしに関係なく, a, b, cを繰り返す機能ってことであってますか?

  561 :デフォルトの名無しさん:2019/11/14(木) 15:51:47.87 ID:MT98n7t2
  多重フォルダの中身を.
  一番上のフォルダにまとめるスクリプトってどうやるの?
  できればフォルダをドラッグ&ドロップしたいんだけど.

  562 :デフォルトの名無しさん:2019/11/14(木) 21:52:50.32 ID:ah6E9oLX
  >>561
  for /r %1 %%i in (*) do move "%%i" \

  563 :デフォルトの名無しさん:2019/11/18(月) 20:56:52.03 ID:/+k2TWLn
  なんかこんなバッチファイルがあったけどうまく動かない.
  for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagenameeq SKRWATCH*" /fo
  "table" /nh`)  do
  if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else(START /D
  C:\Users\user1\Downloads\skrw021 SKRWATCH)

  564 :デフォルトの名無しさん:2019/11/18(月) 21:18:40.00 ID:45qFz0UJ
  >>563
  うまく動かないでは状況が不明(エラーxxxが表示とか具体的に)
  ・tasklistは動くのか?(tasklist /?)
  ・そのままコピペしてるのなら動かなくて当然.
    (doの前に全角空白があるし, doの後も改行されてる.
      起動するパスがexeと空白で区切られてるがタイプミスか)
  ・対象はそのEXEで間違いないのか, パスに間違いはないか.

  565 :デフォルトの名無しさん:2019/11/18(月) 21:26:40.79 ID:45qFz0UJ
  >起動するパスがexeと空白で区切られてるがタイプミスか.
  これはフォルダ指定だから記述に問題はなかったね.

  566 :デフォルトの名無しさん:2019/11/19(火) 00:58:21.49 ID:f1OS2g5Q
  >問題はなかったね.
  問題あるから動かねーんだろwwバカじゃね?
  いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ.

  567 :デフォルトの名無しさん:2019/11/19(火) 03:01:51.46 ID:DFw2Dz+B
  pause & exit
  コンソール入力で起動なら exit/b

  568 :デフォルトの名無しさん:2019/11/20(水) 12:24:50.17 ID:2S7bcPNj
  テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね?
  [下矢印]なイメージです.
  key = value
  [version]

  569 :デフォルトの名無しさん:2019/11/20(水) 13:04:27.56 ID:Tu0gcZfO
  batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う.

  570 :デフォルトの名無しさん:2019/11/20(水) 13:53:46.39 ID:xBPN5HFi
  エディタでの置換じゃ無理な処理数なん?
  batで文字列操作は事故の元.
  JSかPSでも使えば?

  571 :デフォルトの名無しさん:2019/11/20(水) 17:43:27.76 ID:jZ8vbKIX
  >>569
  >>570
  やりたいことはローカルセキュリティーポリシーテンプレートを書き換えたいんですよ.
  seceditってコマンド使うんですけどその書き換えの部分を自動化したいんです.
  因みにPSでは使えないです.

  572 :デフォルトの名無しさん:2019/11/20(水) 19:20:58.96 ID:Tu0gcZfO
  これでいけないかな.
  https://qiita.com/kurukurupapa@github/items/f4439fd5c33f6ebfec62

  573 :デフォルトの名無しさん:2019/11/20(水) 19:53:19.75 ID:p2TBD6cq
  一行ずつぐるぐる回しながら表示して.
  [version]だったら, その表示の前に追加すればいいだけじゃん.

  574 :デフォルトの名無しさん:2019/11/21(木) 09:08:09.78 ID:YDFq+t9K
  いいやPS使ってもらう.

  575 :デフォルトの名無しさん:2019/11/21(木) 10:25:48.48 ID:Wg+WlOX1
  ファイルを一行ずつ読み込んで出力する処理に.
  ちょこっと手を加えるだけだから簡単だな.

  576 :デフォルトの名無しさん:2019/11/21(木) 11:16:31.45 ID:LvODftpp
  簡単だったら早く教えろよな.
  キレちゃうぞこのやろう.

  577 :デフォルトの名無しさん:2019/11/21(木) 11:47:37.77 ID:xinrmZtD
  PSで簡単にできたからもういいわ.

  578 :デフォルトの名無しさん:2019/11/21(木) 12:46:53.45 ID:7xPdmDWo
  >>572
  行頭が数字なのにeolの指示は無意味.
  delimsを数字にしないとまずいし.
  他人のバッチを鵜呑みにして理解していないバッチ.

  579 :デフォルトの名無しさん:2019/11/21(木) 15:03:03.19 ID:8WRatKwZ
  EUCテキストだから, ファイル名をそのままfindstrに突っ込むのは無理だな.

  580 :デフォルトの名無しさん:2019/11/21(木) 16:04:24.91 ID:7xPdmDWo
  >>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)

  581 :デフォルトの名無しさん:2019/11/21(木) 16:15:57.27 ID:7xPdmDWo
  >>580 を実行前は chcp 932

  582 :デフォルトの名無しさん:2019/11/21(木) 20:46:01.60 ID:8WRatKwZ
  EUCじゃなくてUnicode(UTF16)だった.

  583 :デフォルトの名無しさん:2019/11/21(木) 22:34:33.13 ID:2C4HvUZs
  コード変換ソフトがないと, 無理かな.

  584 :デフォルトの名無しさん:2019/11/21(木) 22:42:46.40 ID:8WRatKwZ
  いやfindstrにファイル名渡さないようにすればそれでいい.
  'type %s%^|findstr /n ^^'
  cmd /u /c hoge.bat in.txt out.txt

  585 :デフォルトの名無しさん:2019/11/21(木) 22:47:11.20 ID:8WRatKwZ
  ^^じゃダメだった.
  ^^^^か"^"だね.

  586 :デフォルトの名無しさん:2019/11/21(木) 23:14:31.55 ID:t93OqxgW
  >>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]

  587 :デフォルトの名無しさん:2019/11/21(木) 23:21:01.84 ID:8WRatKwZ
  ただBOMが付かないね.
  BOMが無いと使えないかどうかは怖いので試してない.

  588 :デフォルトの名無しさん:2019/11/22(金) 00:14:32.18 ID:UfmR8W/F
  >>587
  @echo off & if "%~1"==":x" goto x
  set "a=key = value" & set "b=[version]" & sets="%~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 (setc=%%i
  setlocal enabledelayedexpansion
  set d=!c:*:=!& if /i !d!==!b! echo.!a!
  echo.!d!
  endlocal)

  589 :デフォルトの名無しさん:2019/11/22(金) 00:20:53.00 ID:UfmR8W/F
  >>588
  あらかじめbom付き空テキスト用意しておけば.
  もっと簡単なバッチになるけどね.

  590 :デフォルトの名無しさん:2019/11/22(金) 02:00:26.84 ID:iZoP+Nd2
  FINDSTR: // は無視されました.
  /n /rとするか, /nだけにするか.

  591 :デフォルトの名無しさん:2019/11/22(金) 02:02:44.42 ID:iZoP+Nd2
  /nrで良いか.

  592 :デフォルトの名無しさん:2019/11/22(金) 02:47:17.93 ID:UfmR8W/F
  そうだな. 直ぐ消えるので気付かなかった.
  動作はするようだが.
  スペース入れた方が無難だね.

  593 :デフォルトの名無しさん:2019/11/22(金) 08:47:38.56 ID:wKGQ5j7v
  rubyきちがいきてるね.

  594 :デフォルトの名無しさん:2019/11/22(金) 09:49:43.81 ID:VuiommTl
  無視無視.

  595 :デフォルトの名無しさん:2019/11/22(金) 12:09:43.22 ID:f2CG40En
  point of no return

  596 :デフォルトの名無しさん:2019/11/23(土) 16:13:10.37 ID:x4sN5Hm0
  質問した人は登場しないね.
  ひょっとして>>577が最後?

  597 :デフォルトの名無しさん:2019/11/23(土) 16:50:58.80 ID:xep2e/TT
  awkが手軽で楽そうだがユニコードできたっけ?

  598 :デフォルトの名無しさん:2019/11/25(月) 13:59:48.96 ID:6F6igyhI
  WindowsならPSで良いだろ.
  文字コードもドトネトで扱える範囲で指定できるし.

  599 :デフォルトの名無しさん:2019/11/26(火) 10:19:19.63 ID:NW9y+uW0
  用途:エクセルにある複数の画像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では変わりませんでした.

  600 :デフォルトの名無しさん:2019/11/26(火) 10:20:48.75 ID:NW9y+uW0
  >並べて書いた.
  batファイルにしてからダブクリのため.

  601 :デフォルトの名無しさん:2019/11/26(火) 12:23:55.89 ID:ImxGWCjG
  httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う.
  ダウンローダーはその辺勝手にやってくれてるんだよ.
  取り敢えずこれ真似してforでlist読んでやってみれば?
  https://automationlabo.com/wat/?p=570

  602 :デフォルトの名無しさん:2019/11/26(火) 12:32:29.83 ID:NW9y+uW0
  >>601
  ありがとう, そこのサイトみてやってるんだ.
  ちなみに今はHTTPS対応してるようで.
  https://maku77.github.io/windows/cmd/download.html
  https://qiita.com/uratatsu/items/d77152ca121d0b779464
  一件づつコピペだったらできるんだ.
  ダウンローダーについては気軽にスレで聞いてるけど,
  画像ごとにフォルダを指定して一気に保存ができるものはないみたい.
  昔懐かしいirvineができる的な噂見てやってみたけど, フォルダ指定ができない. orz.

  603 :デフォルトの名無しさん:2019/11/26(火) 13:46:11.40 ID:ISv3uuWx
  しらんけど.
  前の行の処理が完了する前に次の物が始まるのがまずいなら.
  Call  でいんじゃないの?

  604 :デフォルトの名無しさん:2019/11/26(火) 14:15:56.61 ID:ImxGWCjG
  call または start "" /wait コマンド.

  605 :デフォルトの名無しさん:2019/11/26(火) 14:16:12.39 ID:JyI6kWkc
  特定に箇所にダウンロードして, ダウンロードが終わったら移動するんじゃダメなの?
  なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう.
  頭硬いのかな.

  606 :デフォルトの名無しさん:2019/11/26(火) 14:22:21.16 ID:Rh/VLF1h
  bitsadmin の代わりに cURL を試してみては.

  607 :デフォルトの名無しさん:2019/11/26(火) 14:40:23.78 ID:jwtMC5+Q
  >>599
  ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど.

  608 :デフォルトの名無しさん:2019/11/26(火) 14:41:21.48 ID:ISv3uuWx
  たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう.
  ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう.

  609 :デフォルトの名無しさん:2019/11/26(火) 14:51:14.37 ID:NW9y+uW0
  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をそのままフォルダにされても, 今回の場合は探し出すのが大変なんだよ,
  ファイルに行くまでに何回クリックいる? x100だよやりたいならどうぞ私は嫌です. w.
  (単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい)
  つか, あなたのそのやり方やるぐらいなら, URLのリストをいっこづつコピペで.
  開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん.
  だってDLしたあとで探す手間いらないですよね?

  610 :デフォルトの名無しさん:2019/11/26(火) 14:55:31.49 ID:JyI6kWkc
  >>609
  >だってDLしたあとで探す手間いらないですよね?
  なにを探すの?
  空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん.
  しかもダウンロードするファイル名分かってるんだろ?
  まとめてダウンロードしてからでも人間が探す必要なんかないじゃん.
  ダウンロードディレクトリにあるんだから.
  脳みそ足りて無くない?

  611 :デフォルトの名無しさん:2019/11/26(火) 14:59:19.90 ID:NW9y+uW0
  >>607
  !!
  調べてみます!
  まあそりゃねぇ.
  管理ナンバー URLっていう100個のリストにある画像集める必要があって.
  素直にそのURLをブラウザで開いてD&Dもしてましたよ・・・けど開いてる時間すら.
  面倒になってきまして・・・.
  ダウンローダーいろいろ探したけど, ブラウザのダウンロードフォルダ固定とか.
  ダウンロードする画像ごとにフォルダ指定しろダイアログとか, そーじゃねーよと. w.
  もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る.
  で, GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ.
  599の状態でビャーってなればよかったのだが. (もっといい方法あったらそっちがいいけど!)

  612 :デフォルトの名無しさん:2019/11/26(火) 15:05:17.28 ID:NW9y+uW0
  >>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.

  613 :デフォルトの名無しさん:2019/11/26(火) 15:25:21.93 ID:XdTMGSyO
  batで外部プログラムの実行完了まで待つ呼び出し方法は.
  start /wait
  って上で誰かが言ってるだろ.

  614 :デフォルトの名無しさん:2019/11/26(火) 15:33:34.59 ID:ISv3uuWx
  ツリー上に保存しなけりゃいいし.
  ダウンロードフォルダのルートで*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ.

  615 :デフォルトの名無しさん:2019/11/26(火) 15:49:02.22 ID:NW9y+uW0
  ツリーに保存しないとダメだからそうしてるんだけど.
  この管理番号の画像これですよーと明示できなければならないからリストがあるわけで.
  必ず4つ, 必ず5つならDL時即時リネーム連番にしてもいいけど・・・3しかなかったり6あったりする.
  それを検索するにしても画像リストと照合しながら?工程増えすぎ. 元の手順より面倒になっても. w.
  waitはダメでした.
  trancefar ~.
  wait
  trancefar ~
  は使い方間違ってますか?
  trancefar ~複数URL
  wait
  もだめでした・・・.

  616 :デフォルトの名無しさん:2019/11/26(火) 15:54:58.38 ID:SASMXjiT
  start "" /wait bitsadmin
  でしょ.

  617 :デフォルトの名無しさん:2019/11/26(火) 15:56:32.80 ID:ISv3uuWx
  いちいち一個ずつ保存先指定するより楽だよ.
  検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい.

  618 :デフォルトの名無しさん:2019/11/26(火) 16:10:59.88 ID:XdTMGSyO
  とにかくダウンロードが正常に終わるようにならないと先に進めないだろ.
  ダウンロード時にフォルダが決まるならそれで問題解決だし.
  外部ダウンローダを使うのなら, 落としたファイルとurlとの対応が取れるのかが問題.
  それが可能(例えばファイル名が行番号になってるとか)なら.
  落とした後にファイルを対応するフォルダに移動すればいい.
  もちろんbat等の自動化で.

  619 :デフォルトの名無しさん:2019/11/26(火) 16:20:26.70 ID:ImxGWCjG
  start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
  urlに&とか%は無いの?

  620 :デフォルトの名無しさん:2019/11/26(火) 16:26:58.84 ID:NW9y+uW0
  >>617
  それ, ブラウザでURL開いて, 保存先フォルダ開いてD&Dのほうが早いよ?
  今時のブラウザ, コピペと同時に開くんだから.
  >>618
  それな;
  >>616
  !
  そういう使い方になるのか!ありがとうございます!
  でも空ファイルだった. w.
  Dirとmdで生きてるのでもう脳みそ煮えてますわ・・・.

  621 :デフォルトの名無しさん:2019/11/26(火) 16:34:10.52 ID:NW9y+uW0
  >>619
  ある. %20とか?とか.
  https://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
  https://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
  こんな感じ.
  bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・.
  えっ??まさか%%

  622 :デフォルトの名無しさん:2019/11/26(火) 16:50:52.29 ID:ISv3uuWx
  >>620
  一個ずつドラッグドロップする気?

  623 :デフォルトの名無しさん:2019/11/26(火) 16:51:59.31 ID:ISv3uuWx
  >>618
  ダウンローダーなら正常に終わるでしょ.

  624 :デフォルトの名無しさん:2019/11/26(火) 16:57:32.34 ID:XdTMGSyO
  >>623
  一般的なダウンローダなら, urlの末尾がファイル名になるが.
  名前の重複も多く起き, その場合, ダウンローダは自動的にリネームする.
  aaa.jpg, aaa(1).jpgのように.
  しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない.
  これとリストにあるurlとの対応をとるのは大変だと思わん?

  625 :デフォルトの名無しさん:2019/11/26(火) 17:03:32.54 ID:JyI6kWkc
  >>624
  結局一つずつダウンロードする必要があるだろ?
  やっぱり何を探せなないのが全くわからんなぁ.

  626 :デフォルトの名無しさん:2019/11/26(火) 17:04:08.93 ID:ISv3uuWx
  >>624
  重複はツリー上で保存すりゃ起きない.

  627 :デフォルトの名無しさん:2019/11/26(火) 17:07:32.81 ID:NW9y+uW0
  >>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&D4工程.

  628 :デフォルトの名無しさん:2019/11/26(火) 17:10:41.82 ID:ImxGWCjG
  >>621
  詰み.
  &なら "%%~B" とすれば行けたかもだけど.
  バッチで%~%のエスケープは出来なくないもののかなり面倒くさい.
  powershellとか行った方がいい.
  どうせ自動化するのなら>>612の元listから抽出してDLする方法をPSスレとかで相談してみれば?

  629 :デフォルトの名無しさん:2019/11/26(火) 17:15:21.53 ID:NW9y+uW0
  で, 私はその3工程ですらめんどくっせーってなって, 3工程とも省けんかなと考えた.
  #今後も同じ作業あるから, 今なんとかできてると今後が楽.
  ダウンローダーのダウンロード先の問題って, こうなるんだよね.
  http://imepic.jp/20191126/620210
  ふ, ふかい. (これはFirefoxアドオンのスクラップブック. DownloadAllThemもこういう感じ)
  お気に入りのサイト見るだけならアドオンからわかるんだけど, 画像を取り出すとなると.
  エクスプローラーに行く必要がある.

  630 :デフォルトの名無しさん:2019/11/26(火) 17:15:53.07 ID:ISv3uuWx
  >>627
  エクセルに入れてるってんだから.
  まとめてURL処理してるんでしょ.
  D&Dをファイル数分しなくちゃならんのを言ってるんだが.
  まとめてURL処理してるならD&Dは1回でいい.

  631 :デフォルトの名無しさん:2019/11/26(火) 17:18:49.77 ID:NW9y+uW0
  >>628
  うへwわろすwそういうことか!
  Powershellはこっち以上に全くわからんな・・・.
  画像リストはGoogleスプレッドにぶんなげて作れてはいる.
  ありがとう.

  632 :デフォルトの名無しさん:2019/11/26(火) 17:19:23.77 ID:ImxGWCjG
  0バイトになるのは書き込み権限とか.
  管理者で実行しても変わらない?

  633 :デフォルトの名無しさん:2019/11/26(火) 17:23:52.25 ID:NW9y+uW0
  >>632
  transfarされる前に次にいっちゃって, でもファイル作れって言ってるから空のファイルつくりましたって感じに見える.
  transfar実行画面のBYTE:0/0のところが, いっこづつやったときはにゅ----ーって動いてファイル捕れるんですが.
  ここが0/0のままで次を始めてしまう.
  Wait入れようが, Pauseいれようが, そこは同じですね.

  634 :デフォルトの名無しさん:2019/11/26(火) 17:42:23.81 ID:NW9y+uW0
  >>631
  エスケープさせてできました!!
  コマンド自体もスプレッドシートに関数くんでやってるので, どこかの時点で%
  を置き換えてやることにします.
  ヒントありがとうございました.
  みなさまもたくさんヒントありがとうございました.

  635 :デフォルトの名無しさん:2019/11/26(火) 17:50:12.00 ID:XdTMGSyO
  >>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"
  )

  636 :デフォルトの名無しさん:2019/12/07(土) 09:30:10.75 ID:/m01ABgd
  >>634
  おい逃げるなよ.

  637 :デフォルトの名無しさん:2019/12/08(日) 23:47:18.40 ID:wNkvi2te
  >>636
  こわいよ. w.
  もはや逃げることはできぬぞ, か.

  638 :デフォルトの名無しさん:2019/12/09(月) 14:56:56.31 ID:0+3TB6cR
  トレンドに#業務ハックというのが上がってた. フーン.
  ここにいるわるいオジサン達は徹底的に省力化して, あとは仕事するフリして過ごすようなことは.
  まさかしていませんよね?

  639 :デフォルトの名無しさん:2019/12/10(火) 05:01:38.65 ID:CfjKoCjD
  無理そうな気はしつつも質問.
  苗字<tab>名前<tab>年齢<tab>住所.
  田中<tab>太郎<tab>27<tab>大阪.
  山田<tab>花子<tab><tab>東京.
  佐藤<tab><tab>35<tab>
  こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど.
  tokens=2, 4
  にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね.
  これはもうvbsやVBAじゃないと無理ぽかな.

  640 :デフォルトの名無しさん:2019/12/10(火) 07:15:07.41 ID:BTxKZMwl
  >>639
  delimsに指定してもダメなの?

  641 :デフォルトの名無しさん:2019/12/10(火) 07:44:27.57 ID:CfjKoCjD
  半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー.

  642 :デフォルトの名無しさん:2019/12/10(火) 09:16:41.59 ID:3V5uc2tI
  >>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>にはタブを入力.

  643 :デフォルトの名無しさん:2019/12/11(水) 01:05:38.94 ID:hz4JPg2Q
  おお, 値の無い列には半角スペースを入れてしまうわけか.
  こりゃ気付かんかったサンクス.

  644 :デフォルトの名無しさん:2019/12/13(金) 01:06:30.14 ID:7bx1tfw6
  バッチでフォルダの表示方法とかかえられないよ?
  詳細にして 表示の種類に長さとか大きさとか.
  いれたいんだけど.
  それをワンクリックでやりたい.
  https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg
  名前とか日付のとこに 長さとか大きさを追加するってことね.

  645 :デフォルトの名無しさん:2019/12/13(金) 01:06:50.17 ID:7bx1tfw6
  かえられないよの?

  646 :デフォルトの名無しさん:2019/12/13(金) 04:06:09.26 ID:t9dRWycX
  >>645
  レジストリ値弄れば出来たと思う.
  昔職場の環境統一するのに使ってた.
  詳細はRegshotとかで差分とって.
  バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか.

  647 :デフォルトの名無しさん:2019/12/13(金) 04:07:58.73 ID:t9dRWycX
  >>645
  設定後にShellの再起動も必要だったかも.

  648 :デフォルトの名無しさん:2019/12/13(金) 06:18:44.99 ID:SOm460Ps
  >>646-647
  レジストリか.
  なるほど.
  ちょっと色々調べてみます.

  649 :デフォルトの名無しさん:2019/12/19(木) 16:55:31.02 ID:l8jrOhSU
  こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
  まあ実用上の問題は無いんですが.
  @echo off
  for /r %%i in (*.*) do (
  echo "%%~nxi"
  echo.
  )
  pause

  650 :デフォルトの名無しさん:2019/12/19(木) 17:08:49.51 ID:TZP99wd2
  ピリオドとかコロンじゃなくて, カンマとかセミコロン使えばいいよ.

  651 :デフォルトの名無しさん:2019/12/19(木) 17:16:19.46 ID:TZP99wd2
  イコールもお仲間で, この3つが特別区切り記号らしいよ.

  652 :デフォルトの名無しさん:2019/12/19(木) 17:18:33.06 ID:l8jrOhSU
  >>650
  はい, カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました.

  653 :デフォルトの名無しさん:2019/12/19(木) 17:23:09.51 ID:TZP99wd2
  特別区切り記号だから.

  654 :デフォルトの名無しさん:2019/12/22(日) 19:05:52.87 ID:DvnYZkai
  /rが悪さをしてるんじゃね.
  サブフォルダの中でピリオドを2個にして.

  655 :デフォルトの名無しさん:2019/12/23(月) 21:26:36.07 ID:qZ1/nSQb
  startコマンドでAPを起動後, 「F11」をバッチファイルから入力するには, どう記述すればいいのでしょうか?

  656 :デフォルトの名無しさん:2019/12/25(水) 01:34:54.95 ID:vipj7N9s
  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') DOset
  cscexe=%%i
  %cscexe% temp.cs
  temp.exe

  657 :デフォルトの名無しさん:2019/12/25(水) 11:28:21.34 ID:E0w5VXt3
  >>656
  ワラタ.

  658 :デフォルトの名無しさん:2019/12/25(水) 12:39:52.06 ID:32sm7KoS
  >>656
  すごいな, プロ?

  659 :デフォルトの名無しさん:2019/12/26(木) 00:38:52.07 ID:ocAthgHy
  ウイルスに使えそう. w.

  660 :デフォルトの名無しさん:2019/12/26(木) 18:09:54.44 ID:gPRn8RL/
  職業 プロバッチファイルスクリプター(自称)

  661 :デフォルトの名無しさん:2019/12/27(金) 00:09:22.71 ID:CW1qzWXe
  %1がフォルダ名の場合, サイズを示す%~z1は0以外の数字になる.
  何を表しているのか不明.

  662 :デフォルトの名無しさん:2019/12/27(金) 07:50:28.51 ID:sZ8rOkNi
  エントリーレコードのsizeじゃね?テキトーmaybe

  663 :デフォルトの名無しさん:2019/12/28(土) 12:01:21.14 ID:c8Bqzbdx
  >>662
  そんな数字が多いですね.
  \windows\winsxs や * だと違う表示も出るので意味不明, バグなのか.

  664 :デフォルトの名無しさん:2020/01/02(木) 17:54:09.99 ID:LCDlLvJS
  for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください.
  dir /tc 何か | findstr findstr /e /c:"<DIR> ."
  みたいにして取り出して整形するのは何か間違えている気がしてならないので.

  665 :デフォルトの名無しさん:2020/01/02(木) 20:56:32.19 ID:gZNl6+48
  %~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 なら秒まで取得出来るしバッチより痒いところに手が届く.

  666 :デフォルトの名無しさん:2020/01/02(木) 20:59:21.16 ID:gZNl6+48
  修正.
  %a->%%a
  echo %%a%%b%%c%%d%%e

  667 :デフォルトの名無しさん:2020/01/03(金) 08:18:43.19 ID:6GenP8Ub
  ありがとうございます.
  何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう,
  って話になるんですね, ミリ秒単位までいけるみたいですし.

  668 :デフォルトの名無しさん:2020/01/03(金) 09:56:56.50 ID:+cYn5CAB
  forfiles でフォルダの更新日時も得られる, ただしファイルが多いと遅い.
  forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
  dirだと得られない秒もOK, 仕様がばらばら, バッチは不思議.

  669 :デフォルトの名無しさん:2020/01/03(金) 13:02:11.21 ID:fh28MJ7p
  気まぐれに試してみたら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

  670 :デフォルトの名無しさん:2020/01/04(土) 01:23:14.19 ID:/SGph6WX
  dir ?
  親DIRがピリオド2文字なのに.
  なぜ表示されるのか.

  671 :デフォルトの名無しさん:2020/01/04(土) 07:59:26.77 ID:T5YxFwCT
  . と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ.
  だから .. の(作成|更新)日時は自ディレクトリと同じ.
  .. は親ディレクトリを指し示すが親ディレクトリとは別のモノ.
  なぜと問われても, そういう仕様だから, としか.

  672 :デフォルトの名無しさん:2020/01/04(土) 09:10:30.39 ID:/SGph6WX
  >>671
  ピリオドは区切り文字であり,
  ワイルドカードの?の文字数のカウントに含まれず.
  ピリオドが先頭だと, 最初のトークンは空文字列となり,
  ?は一文字以下の文字列を表すので, それに合致するわけかな.
  ちなみに >>670 はそれより前のレスとは無関係.

  673 :デフォルトの名無しさん:2020/01/05(日) 07:41:36.68 ID:QOfK3b7c
  >>670
  dir /b ? だと表示しない謎.

  674 :デフォルトの名無しさん:2020/01/06(月) 09:00:53.84 ID:VNkic2h1
  ディレクトリと同じ扱いだから.

  675 :デフォルトの名無しさん:2020/01/06(月) 09:51:26.33 ID:8LUwvv7f
  先頭にドットがあると要注意だよな.
  ワイルドカードがドットを無視する場合があるから.
  >copy nul .txt
  >copy nul txt
  >dir/b
  .txt
  txt
  >del txt*
  >dir
  ファイルが見つかりません.

  676 :デフォルトの名無しさん:2020/01/08(水) 10:00:17.73 ID:cX66OF4O
  簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって, なんでbatで書いちゃったんだろってなるのいい加減やめたい.

  677 :デフォルトの名無しさん:2020/01/09(木) 05:17:30.74 ID:yWGnEtOx
  @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 で遊んでたらなんか凄いの見付けた.

  678 :デフォルトの名無しさん:2020/01/09(木) 07:12:55.26 ID:hqwlnXXW
  >>676
  PowerShellでいいんじゃね?

  679 :デフォルトの名無しさん:2020/01/17(金) 04:34:01.53 ID:AQjsaOZ5
  ドラッグ&ドロップ  したファイル名を表示させようと思ってんだけど.
  win10です.
  テスト.bat
  -----------------------
  @echo off
  for %%f in (%*) do (
  echo %%f
  )
  pause
  --------------------------
  だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
  ちなみに.
  @echo off
  echo %1
  pause
  だけだとちゃんとフルパスで表示されます.
  %%と%の違いってなんですか?

  680 :デフォルトの名無しさん:2020/01/17(金) 05:40:03.52 ID:FVJQifjo
  引数が最低1つ以上の場合.
  :LOOP
  echo "%~nx1"
  shift
  if not "%~1"=="" goto :LOOP
  pause
  引数が0個の可能性がある場合.
  :LOOP
  if "%~1"=="" pause &exit /b
  echo "%~nx1"
  shift
  goto :LOOP

  681 :デフォルトの名無しさん:2020/01/17(金) 08:29:31.32 ID:B/evOggr
  shift使わない方法でお願いします.

  682 :デフォルトの名無しさん:2020/01/17(金) 08:39:02.58 ID:FVJQifjo
  >>679
  その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて.
  引数がクオートされていない場合に上手く行かない.
  がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認.

  683 :デフォルトの名無しさん:2020/01/17(金) 18:45:30.02 ID:Xdf1G9+g
  WSLって専用スレあったりする?

  684 :デフォルトの名無しさん:2020/01/17(金) 18:48:00.37 ID:T5MzU9c3
  >>680
  あー>>680のやり方の方がいいわせか.
  >>682
  できましたありがとう.

  685 :デフォルトの名無しさん:2020/01/18(土) 06:36:29.01 ID:77YAYmoS
  >あー>>680のやり方の方がいいわせか.
  そうじゃない. いいも悪いもない. こういう方法もあるよと提示しただけ.
  バッチはどうやってもバグを内包する. 極論動けば何でもいい.
  バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる.
  そういったのを理解した上で簡単な事をやるくらいならいいけど.
  少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる.
  面倒を避けたいなら初めからPowerShellとかでやった方がいい.
  今から覚えるなら尚更.

  686 :デフォルトの名無しさん:2020/01/18(土) 08:02:35.56 ID:UuH5oHRt
  >>679
  ドラッグ&ドロップ  したファイル名に.
  たぶん ) があるんだろう.
  a(1).txt
  とかね.
  なぜ落ちるか自分で考えてみろ.

  687 :デフォルトの名無しさん:2020/01/18(土) 23:29:59.70 ID:jJ2WRqDf
  >>686
  それな.
  バッチはこういう罠があるからPSに移行したわ.
  コメント欄に迂闊に括弧も使えないしこわいこわい.

  688 :デフォルトの名無しさん:2020/01/23(木) 20:57:19.47 ID:qiuXI8ht
  ネストされた環境変数が展開されない事象について.
  https://social.technet.microsoft.com/Forums/ja-jp/0add404a-4157-416f-bf15-0ad455102d85/12493124731248812373124281238329872226592279325968123642363738?forum=Wcsupportja

  689 :デフォルトの名無しさん:2020/01/26(日) 21:47:29.72 ID:Nyn5xlpx
  2つのウィンドウで別フォルダを表示してファイル存在の有無によって選択/解除ができその後コピーや移動ができる,
  そんなファイラーがあったら便利だなと探してました.
  WinZIP関係のソフトで7-zipというのがあり, なぜか解凍するとその中に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のやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした.

  690 :デフォルトの名無しさん:2020/01/26(日) 23:31:16.84 ID:Jc09ZNe5
  そんなことまで無理にcmdでやらんでも・・・.
  WinMergeすら入れさせてもらえない環境なのか?

  691 :デフォルトの名無しさん:2020/01/27(月) 09:15:34.68 ID:+0QHC3Wk
  日記?

  692 :デフォルトの名無しさん:2020/01/28(火) 22:49:16.68 ID:lbmGsP+l
  "送る"って意外と不自由なんだな・・・.
  バッチファイルでワンクッション入れて, ウマー.

  693 :デフォルトの名無しさん:2020/01/28(火) 23:14:40.52 ID:Vj4Y99PX
  何が不自由なの.

  694 :デフォルトの名無しさん:2020/01/30(木) 20:40:29.71 ID:6k+E856c
  このバッチで何か入力しても a が消える.
  @echo off
  set /p a=data=
  rem %a=%
  echo data=%a%
  pause

  695 :デフォルトの名無しさん:2020/01/30(木) 22:45:14.45 ID:VR7HU+gm
  >693
  勉強不足があるかも知れんが.
  ・さっさと画面を閉じちゃう(cmd/kで回避)
  ・%1に入れてくれない.
  ・ファイル名の後ろにオプションが付けられない.

  696 :デフォルトの名無しさん:2020/01/30(木) 23:26:29.39 ID:D5cDwkr0
  ワンクッションってそういう意味か.
  昔からスクリプトを送るに登録することなんて当たり前のことだったけどね.
  むしろexeしか登録しない人はこのスレにはいないとまで思ってた.

  697 :デフォルトの名無しさん:2020/01/31(金) 11:16:38.40 ID:JWfC0/9e
  >>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

  698 :デフォルトの名無しさん:2020/02/09(日) 18:23:32.44 ID:62ExnvKA
  叩いたらスクリーンセーバーをオフにしたく, killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど,
  Windows10のタブレットモードで動かすとスタートメニューが起動してしまう.
  元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな?
  ソフトを立ち上げっぱなし->スクリーンセーバー起動->条件下でスクリーンセーバーkillバッチ->立ち上げてたソフトに戻る.
  ってのにしたいのにkillバッチ->スタートメニューになってしまう.
  あと, バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない・・・.

  699 :デフォルトの名無しさん:2020/02/10(月) 13:13:43.33 ID:0DoxGo8j
  スクリーンセーバー動いてるのに,
  どうやってバッチ叩いてんの?
  さっぱりわからん.

  700 :デフォルトの名無しさん:2020/02/10(月) 23:18:37.16 ID:B/3TWI1a
  >>698
  ネタだよね?

  701 :デフォルトの名無しさん:2020/02/11(火) 12:30:00.59 ID:DitzTCfU
  何かをトリガーにしてタスクから叩くって事じゃないかな.

  702 :デフォルトの名無しさん:2020/02/11(火) 17:11:28.69 ID:DSTYXSth
  特定のキー操作で解除するタイプのスクリーンセーバーなのかな?
  でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど.

  703 :デフォルトの名無しさん:2020/02/11(火) 17:51:57.47 ID:hksaF/sY
  Windows7標準のmklinkでシンボリックリンクを作ると.
  リンクのタイムスタンプ(作成, 更新, アクセスいずれも)は.
  リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり.
  普通のファイルのようにはタイムスタンプを変更できないようだけど.
  変更する方法ある?
  ハードリンクなら同じものを見ることになるから勝手に揃うけど.
  使い分けの方針が定まらなくてあまり使ってない.

  704 :デフォルトの名無しさん:2020/02/11(火) 23:47:43.79 ID:9k84sg+E
  >>703
  シンボリックリンクの実体はファイルだからSetFileTimeで変更できるらしいぞ.
  らしいってのは俺がシンボリックリンクつかったことないからね.

  705 :デフォルトの名無しさん:2020/02/14(金) 23:11:39.08 ID:2Mmdz3hG
  Windows Vistaは2017年にサポートが終了しましたがWindows Server
  2008向けのセキュリティ更新プログラムを手動でインストールすることができていました.
  ところがどの順番でどれをインスコすればいいのか面倒, , , それを解決するバッチプログラムを作った方がいます.
  バッチファイルの記述がフムフム, へぇ~という感じで自分にはとても勉強になりました. 興味ある方はどぞ.
  創造の柱.
  http://blog.livedoor.jp/pillars_of_creation/archives/1831755.html

  706 :デフォルトの名無しさん:2020/03/24(火) 10:56:05.36
  このスレで聞くべきなのか分かりませんが, Windowsで数千個のPDFを一括処理したいので, 取りあえずここで聞いてみます.
  PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で, "表示", "ページレイアウト","倍率"を設定できますが,
  1つ1つ手作業で設定するのはさすがに無理です.
  Javaの様なプログラミング言語でも, 他のアプリでも何でもいいんですが, この文書のプロパティを一括で設定する方法って何がありますか?

  707 :デフォルトの名無しさん:2020/03/24(火) 18:54:16.84 ID:k6OnWQi4
  それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?

  708 :デフォルトの名無しさん:2020/03/24(火) 19:52:05.20 ID:LC2xv/4E
  変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね.

  709 :デフォルトの名無しさん:2020/03/24(火) 20:27:13.25
  >>707
  Acrobat側の表示方法を変えるのじゃ無く, PDF側で変えたい.

  710 :デフォルトの名無しさん:2020/03/24(火) 20:53:17.46 ID:k6OnWQi4
  そもそもPDF側に表示方法が保存されてるものなの?
  結局Acrobat側の問題じゃない?

  711 :デフォルトの名無しさん:2020/03/24(火) 22:35:05.89 ID:tH0Sn0AY
  「pdf コマンドライン ページレイアウト」でググったら.
  cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた.
  これ, 見開きを縦スクロールにしたり単ページにしたりできて面白い.
  "倍率" が 2017/10 の時点で無理らしいけど.

  712 :デフォルトの名無しさん:2020/03/26(木) 01:20:56.78 ID:3WOBAGMl
  ID消して質問してるのがすげー腹立つな.
  本当に解決を望んでるなら逆にコテ付けるぐらいできんのか.

  713 :デフォルトの名無しさん:2020/03/30(月) 02:44:24.40 ID:X7klH3J+
  windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど.

  714 :デフォルトの名無しさん:2020/04/18(土) 11:05:03.45 ID:6HUykZ9A
  今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな.
  いちいちコードページ指定するとなんかウィンドウが切り替わって重いし.
  cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?

  715 :デフォルトの名無しさん:2020/04/18(土) 14:03:40.50 ID:a+OnqKl3
  MSはレガシーのために保守してるだけだろ.
  powershell使え.

  716 :デフォルトの名無しさん:2020/04/18(土) 16:57:49.71 ID:VodBEB+r
  例えば, こんなバッチをutf-8で作成して実行する.
  できたtest.txtを見たら1行しかない. なんでだ.
  @echo off
  chcp 65001
  call :test > test.txt
  exit
  :test
  echo テスト.
  echo テスト.

  717 :デフォルトの名無しさん:2020/04/18(土) 17:12:48.44 ID:fYZW+FI9
  このスレで, utf-8 のバッチファイルにするなら,
  行末は半角英数な文字にしとけ.
  というのを学んだ, >>262 からの流れ.
  なんでなのかはいまだに知らない.

  718 :デフォルトの名無しさん:2020/04/18(土) 17:22:50.42 ID:D5FH+wQt
  2つめのechoがエラーになってるね.
  echo テスト.
  echo テスト.
  と間に空白行を挟めば正常だがどういう理屈なのか分からん.

  719 :デフォルトの名無しさん:2020/04/18(土) 17:31:32.83 ID:VodBEB+r
  れすサンクス.

  720 :デフォルトの名無しさん:2020/04/21(火) 19:56:52.87 ID:vK3trFFL
  %2つというのは, 何らかのエスケープですか?
  また, forを使うときにfor %iなどとしますが, %の意味がよくわかりません.

  721 :デフォルトの名無しさん:2020/04/21(火) 21:11:11.38 ID:vK3trFFL
  フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか.
  forを使用してインデックスを連番として付与する感じだと思うんですが.
  ファイルはこんな感じです.
  犬.txt
  猫.txt
  猿.txt

  722 :デフォルトの名無しさん:2020/04/21(火) 21:17:03.32 ID:FdhLTsrP
  >>720
  %は互換性や拡張などのおかげで大変ややこしい事になっている.
  説明するには小一時間かかるのでここでは控える事にする.

  723 :デフォルトの名無しさん:2020/04/21(火) 21:26:09.14 ID:M3jMZi3+
  >>720
  %は変数を定義する時に使うよ %iで「iという変数」になるよ.
  バッチプログラムで使う時は%%iにする必要があるよ.
  https://www.pg-fl.jp/program/dos/doscmd/for.htm
  「%」のページも読んだ方が良いよ.

  724 :デフォルトの名無しさん:2020/04/21(火) 22:46:58.98 ID:HADG6GDb
  >>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

  725 :デフォルトの名無しさん:2020/04/21(火) 22:54:20.97 ID:h/bjIQIw
  rubyはスレ違い.

  726 :デフォルトの名無しさん:2020/04/21(火) 23:04:39.20 ID:s3lLVMWt
  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

  727 :デフォルトの名無しさん:2020/04/21(火) 23:14:39.66 ID:J0u+GdjC
  リネームは結構難しい.
  リネーム後のファイルが再びリネーム対象となる場合がある.

  728 :デフォルトの名無しさん:2020/04/21(火) 23:27:06.64 ID:alPdontK
  set N=1000
  :LOOP
  if "%~1"=="" exit /b
  set /a N+=1
  ren "%~1" "%N:~-3% %~nx1"
  shift
  goto :LOOP

  729 :デフォルトの名無しさん:2020/04/21(火) 23:28:37.78 ID:s3lLVMWt
  リネーム後のファイル名が既存だったりするし.

  730 :デフォルトの名無しさん:2020/04/21(火) 23:49:32.13 ID:GY5lnYbX
  リネームは一覧を一旦ファイルに出力してから回した方が安全だよ.
  それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ.
  vbsかjsかpowershell

  731 :724:2020/04/21(火) 23:57:26.74 ID:HADG6GDb
  >>724
  のRuby では最初に, Dir.glob( "C:/Users/Owner/test/*" )
  で, そのフォルダ内のすべてのファイルを取得しているから,
  各ファイルを, rename していく途中で,
  rename後のファイルを, 再びrenameすることはない.

  732 :デフォルトの名無しさん:2020/04/22(水) 00:04:16.90 ID:vEO7RF6u
  >>730
  ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね?
  UNICODE文字は関係あるかね?

  733 :デフォルトの名無しさん:2020/04/22(水) 06:52:59.32 ID:gobEj/px
  >>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の名前は何でもいいが既存の名前を避けてください.

  734 :デフォルトの名無しさん:2020/04/22(水) 09:12:13.99 ID:UZ0N9G3p
  >>732
  >UNICODE文字は関係あるかね?
  SJISに含まれてない文字が入ってると酷いことになる.

  735 :デフォルトの名無しさん:2020/04/22(水) 10:16:03.76 ID:MJO3kN2U
  駄目文字のせいでSJISコードがバグると言うならまだわかるが.
  その逆って意味がわからないな.
  MSは全くテストしてないってことか.

  736 :デフォルトの名無しさん:2020/04/22(水) 11:07:12.34 ID:/W5c3Vma
  >>722-735
  どうも.
  勉強中です.

  737 :デフォルトの名無しさん:2020/04/22(水) 11:53:22.55 ID:/W5c3Vma
  複数行を一行にまとめる場合は, &でつなぐんでしょうか?
  これが改行と同じ意味でしょうかね.

  738 :デフォルトの名無しさん:2020/04/22(水) 12:07:17.67 ID:vEO7RF6u
  >>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 コードページ変えればいいだけ.

  739 :デフォルトの名無しさん:2020/04/22(水) 19:08:42.79 ID:nR8TNEgs
  >>737
  複数行をまとめるって, ,
  文字列の足し算の話?
  コマンドを複数行に分割して記述する話?
  (継続文字のこと?)

  740 :デフォルトの名無しさん:2020/04/22(水) 19:11:46.73 ID:nR8TNEgs
  >>739
  または複数コマンドを一行で記述する話?

  741 :デフォルトの名無しさん:2020/04/22(水) 20:05:53.95 ID:j1ZYXyL3
  >>735
  コマンドプロンプトは自体はUNICODE対応.
  各種コマンドもUNICODE対応.
  だけどバッチファイルは過去の互換性が必要なので.
  デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる.
  その設定はchcpで変えることが出来る.
  単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが.
  forでバッチファイルの世界に招き入れたら,
  chcpの設定によって文字コードの変換が行われる.
  テストはしてるだろ. この文字コード変換は仕様なので.
  バッチファイルでUNICODE文字を扱いたければchcpで.
  UTF-8に変更しなければならないというだけのこと.

  742 :デフォルトの名無しさん:2020/04/23(木) 06:47:17.74 ID:153+oMoq
  >>739
  バッチファイルではなくて, 複数行をコマンドプロンプト上で実行したい場合があったりします.

  743 :デフォルトの名無しさん:2020/04/23(木) 08:24:04.38 ID:5iduMLE+
  >>742
  複数行をコピペじゃ駄目なの?
  例えば, この内容をメモ帳に記述しておいて.
  rem --- ここから ----
  dism /online /cleanup-image /restorehealth
  sfc /scannow
  rem --- ここまで ---
  4行をコピペする.

  744 :デフォルトの名無しさん:2020/04/23(木) 09:07:36.24 ID:Z6s7Y3Lu
  >>742
  複数コマンドを1行で実行したいということなら, , ,
  A & B ... A実行後にBを実行.
  A | B ... Aの実行結果をBに渡して実行.
  A && B ... Aが成功したらBを実行.
  A || B ... Aが失敗したらBを実行.
  長いコマンドを複数行に分割したいなら, , ,
  Sentence1 ^<改行>
  Sentence2
  (サーカムフレックスで継続)

  745 :デフォルトの名無しさん:2020/04/23(木) 12:04:05.59 ID:qTwHi2aC
  ()で囲めばいい.
  (timeout /t 300
  cd d f:\hoge
  for %f in ( *.jpg ) do (
    ・・・.
  )
  )
  正式名称が何かは知らないが勝手にブロックと呼んでる.

  746 :デフォルトの名無しさん:2020/04/23(木) 14:59:02.07 ID:WFX6w8Jo
  >>744
  そういうのがあるのか, | 以外知らなかった.

  747 :デフォルトの名無しさん:2020/04/23(木) 14:59:42.71 ID:WFX6w8Jo
  >>745
  これも知らなかった.

  748 :デフォルトの名無しさん:2020/04/23(木) 15:25:29.03 ID:153+oMoq
  >>743コピペでももちろんいいですが, 知っておきたかったです.

  749 :デフォルトの名無しさん:2020/04/23(木) 16:03:20.39 ID:eZrYYRVL
  なんでバッチ嫌なの?

  750 :デフォルトの名無しさん:2020/04/23(木) 17:31:56.25 ID:P2MaiEJS
  >>748
  だったらこんなところで聞くんじゃなくて.
  一次資料に当たる努力をしなよ.

  751 :デフォルトの名無しさん:2020/04/23(木) 21:20:47.89 ID:M8I+Acr1
  >>745
  それ駄目.
  遅延変数展開しないと痛い目に遭うよ.

  752 :デフォルトの名無しさん:2020/04/26(日) 18:05:24.10 ID:FVxXRtXH
  連番をつけるコードでまだ躓いています.
  hoge.txt
  hogehoge.txt
  を.
  hoge(1).txt
  hogehoge(2).txt
  としたいです.
  echo off & for %i in (*.txt) do (ren %i ???)
  このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが, %i自体にはファイル名が入っていると思います.
  インデックスは取れるんでしょうか?

  753 :デフォルトの名無しさん:2020/04/26(日) 18:36:58.48 ID:FVxXRtXH
  バッチでset /aなどのオプションがありますが, /aは計算を伴う場合に使うそうです.
  この/aに意味はあるのですか?
  何らかの単語の略だと覚えやすいんですが.

  754 :デフォルトの名無しさん:2020/04/26(日) 18:40:50.40 ID:Pfsg7A5O
  その程度ぐぐれば出てくるでしょ.
  インデックスのカウント用変数が必要+変数の遅延展開.
  丸括弧のエスケープが必要.
  aはarithmeticの略.

  755 :デフォルトの名無しさん:2020/04/26(日) 20:15:42.23 ID:cczyU4e/
  @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

  756 :デフォルトの名無しさん:2020/04/26(日) 22:00:20.95 ID:zKIVBOto
  1Point ノウハウ.
  dir ですべてのファイル, フォルダを表示したい場合は.
  dir /A

  757 :デフォルトの名無しさん:2020/04/26(日) 22:18:32.20 ID:DxwpR+0O
  普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの?
  何か理由あるん?

  758 :デフォルトの名無しさん:2020/04/26(日) 22:22:15.53 ID:YV1WqKFq
  >>757
  ファイル名に「%」入ってるとマズくない?

  759 :デフォルトの名無しさん:2020/04/28(火) 05:49:29.43 ID:ceHl0duT
  シェルスクリプトってお手軽省略表記にこだわりすぎるあまり.
  エスケープ処理が複雑化しバグりやすくなって本末転倒だよな.

  760 :デフォルトの名無しさん:2020/04/28(火) 05:57:02.60 ID:l2PF55i3
  そんなところで躓く能なしは, 他の言語で書いても同じだよ.

  761 :デフォルトの名無しさん:2020/04/28(火) 13:01:40.55 ID:DKHJb1hS
  他の言語でもエスケープは必要なことはあるし同じこと.
  ただbatのように自身を置換して逐次実行するするようなことは.
  eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ.

  762 :デフォルトの名無しさん:2020/04/28(火) 16:44:00.76 ID:3RXW9/E3
  要するに分かりにくい.
  ここで初心者にイロハから質問されてもレスがしにくい.
  リネームソフトでも使え.

  763 :デフォルトの名無しさん:2020/04/28(火) 17:37:46.72 ID:7TaGv6sC
  >>759
  シェルスクリプトでエスケープ処理が複雑なんて.
  したことがないんだがどういうケース?
  むしろバッチファイルのほうがややこしすぎる.
  バッチファイルでダブルクォートはいつつけるか言える?
  スペースが含まれたファイル名とか.
  バッチファイルでこれの出力結果は.
  echo "C:\Program Files"
  [下矢印]これです. (ダブルクォート含む)
  "C:\Program Files"

  764 :デフォルトの名無しさん:2020/04/28(火) 18:05:03.26 ID:3RXW9/E3
  どういうケースって, すぐ上の奴だろ.

  765 :デフォルトの名無しさん:2020/04/28(火) 18:18:07.54 ID:7TaGv6sC
  >>764
  もしかしてバッチファイルとシェルスクリプトの違いわかってないの?

  766 :デフォルトの名無しさん:2020/04/28(火) 18:19:14.04 ID:7TaGv6sC
  シェルスクリプトっていうのはUnixやLinuxの.
  /bin/shとかbashのことなんだが.

  767 :デフォルトの名無しさん:2020/04/28(火) 18:20:52.04 ID:RB8xSOb3
  ファイル数わからんけどリネームソフト使えば一分かからんで終了.

  768 :デフォルトの名無しさん:2020/04/28(火) 20:35:28.46 ID:C/yTg51l
  >>766
  俺の定義ではバッチファイルはシェルスクリプトだ.
  config.sysに.
  shell=command.com /e:1024
  とか書いてたからな.

  769 :デフォルトの名無しさん:2020/04/28(火) 20:39:22.04 ID:C/yTg51l
  ちなみにMS-DOSにはエスケープ文字なんて無い.

  770 :デフォルトの名無しさん:2020/04/28(火) 20:40:45.75 ID:f4hk4dsD
  >>768
  意味わかんないから調べたが,
  今では全く通用しない話じゃねーかよ.
  てめーの定義を押し付けんな.

  771 :デフォルトの名無しさん:2020/04/28(火) 20:51:25.37 ID:l2PF55i3
  >>770
  頑張ってググってきたんだからほめてやれよ.

  772 :デフォルトの名無しさん:2020/04/28(火) 22:38:03.31 ID:0mXw36Cx
  >>769
  Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね.

  773 :デフォルトの名無しさん:2020/04/28(火) 23:55:09.09 ID:3RXW9/E3
  cmdはシェルだ. 定義も糞もない.

  774 :デフォルトの名無しさん:2020/04/29(水) 00:05:03.59 ID:kLiglYQz
  >>768
  cmdじゃないじゃん.

  775 :デフォルトの名無しさん:2020/04/29(水) 06:34:57.98 ID:bLWOmnfL
  UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ.
  shやbash=cmd
  シェルスクリプト=バッチファイル.
  シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前.

  776 :デフォルトの名無しさん:2020/04/29(水) 06:56:52.10 ID:SXZJio07
  とはいえ逆にunixでバッチがどうとか言うと違和感あるしな.
  >>766みたいな感覚が一般的.

  777 :デフォルトの名無しさん:2020/04/29(水) 07:15:11.82 ID:sus1L+2H
  >>775
  > シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前.
  シェアならLinuxのシェルスクリプトの方が多いよ.
  今はsystemdに置き換えられつつあるが, 起動処理の多くで.
  シェルスクリプトが使われていた.
  各アプリのビルドなどでもシェルスクリプトは使われている.
  それに対してバッチファイルは殆ど使われていない.
  そもそもWindowsのコマンドは, 他のコマンドの出力を読み取って.
  別のコマンドで処理するように設計されていない.
  単に呼び出すだけ. だからバッチファイルという名前になってる.
  例えばcopyコマンドであってもシェルスクリプトであれば, コピーが正常に終了した場合.
  なにも表示されないのでスクリプトとして使いやすいが.
  Windowsのcopyは人間用のメッセージがいちいち出る.
  コマンドの出力を変数に入れるだけでも大変.
  遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる.
  そもそもの設計思想がスクリプトを組むためではなく, 単にコマンドを並べるという使い方を.
  するためだからバッチファイルはシェルスクリプトだけでなく.
  PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている.
  一方, PowerShellスクリプトやVBScriptはコマンドをよびだすのが.
  面倒になってるので両立してるシェルスクリプトにはかなわない.

  778 :デフォルトの名無しさん:2020/04/29(水) 07:22:12.44 ID:VzuV0Enx
  アスペがうだうだ言ってるだけで全く「会話」が進行していないな.

  779 :デフォルトの名無しさん:2020/04/29(水) 07:36:25.95 ID:SXZJio07
  スレチだから, もうやめろ.

  780 :デフォルトの名無しさん:2020/04/29(水) 07:51:09.96 ID:sus1L+2H
  やなコッタ.

  781 :デフォルトの名無しさん:2020/04/29(水) 22:15:38.24 ID:f6LPbIhG
  パンナコッタ.

  782 :デフォルトの名無しさん:2020/04/29(水) 22:43:10.94 ID:sus1L+2H
  メロンパンナ.

  783 :デフォルトの名無しさん:2020/04/30(木) 00:25:02.17 ID:6g7fIyNp
  マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢.

  784 :デフォルトの名無しさん:2020/04/30(木) 23:56:54.10 ID:4NDFLh29
  アッサムティー好き, いいよね.

  785 :デフォルトの名無しさん:2020/05/01(金) 20:45:42.45 ID:I+dUmCMk
  カタコッタ.

  786 :デフォルトの名無しさん:2020/05/07(木) 18:46:37.87 ID:jiFNKMfo
  滅茶苦茶初歩的な質問ですまん.
  バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?

  787 :デフォルトの名無しさん:2020/05/07(木) 18:51:16.63 ID:cw3NlGJG
  FOR /F ["オプション"] %変数 IN ('コマンド') DO コマンド [コマンド パラメーター]
  または usebackq オプションの場合:
  FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]

  788 :デフォルトの名無しさん:2020/05/07(木) 18:51:30.99 ID:jiFNKMfo
  もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい.

  789 :デフォルトの名無しさん:2020/05/07(木) 19:01:03.56 ID:jiFNKMfo
  >>787 ありがとう, いけたわ.
  logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど, これは他の問題かもしれんな.

  790 :デフォルトの名無しさん:2020/05/07(木) 19:33:24.65 ID:lct9jPsZ
  昔だったら tail -f

  791 :デフォルトの名無しさん:2020/05/07(木) 19:34:28.15 ID:2gF3mugX
  >>789
  標準出力じゃなくて, 標準エラー出力の方にprintしてるんだろ.
  ('py foo.py 2^>^&1')

  792 :デフォルトの名無しさん:2020/05/07(木) 19:47:29.96 ID:jiFNKMfo
  logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた.
  出力取得できたのでまあよし.

  793 :デフォルトの名無しさん:2020/05/07(木) 20:17:47.30 ID:2gF3mugX
  >>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

  794 :デフォルトの名無しさん:2020/05/12(火) 09:27:08.95 ID:hWMQZbFi
  >コマンドプロンプト入門 Kindle版.
  2020年にこれを出すとはチャレンジャーすぎるな.

  795 :デフォルトの名無しさん:2020/05/12(火) 16:03:14.69 ID:PeLhefIP
  amazonで, 確認すると, 2019/09の出版みたいですね.
  どうせなら, power shellの本出したほうが良かったかも.

  796 :デフォルトの名無しさん:2020/05/12(火) 18:45:23.48 ID:NJ7uTfC9
  ファイル名に「b」を含むファイルをコピーするときに.
  たとえば.
  abc.txt というファイルがあって.
  copy *b*.txt def.txt
  がオッケーで.
  copy *b* def.txt
  がエラーなのはなぜですか?
  *は0文字以上の文字列なので.
  両方とも成功すると思っていたのですが.

  797 :デフォルトの名無しさん:2020/05/12(火) 19:05:09.66 ID:fhydWmjd
  >>795
  KindleストアにPowerShellのがいっぱいあるやん.

  798 :デフォルトの名無しさん:2020/05/12(火) 19:55:35.27 ID:UaCqmgBQ
  >>796
  普通にできるけどどんなエラーが出るの?
  ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな.

  799 :デフォルトの名無しさん:2020/05/12(火) 19:59:26.87 ID:fhydWmjd
  *b* が一つでもゴミが付くしね(0x1A)

  800 :デフォルトの名無しさん:2020/05/23(土) 20:41:18.51 ID:H5g1ckea
  Windows Terminal で音を鳴らすにはどうすればいいですか.
  コマンドプロンプトではControl-Gを出力してたんですが.
  Windows Terminalでは無視してくれやがります.

  801 :デフォルトの名無しさん:2020/05/23(土) 22:23:07.24 ID:105ldQbQ
  start beep.wav

  802 :デフォルトの名無しさん:2020/05/23(土) 22:45:59.81 ID:H5g1ckea
  そんなんだったら.
  >copy con beep.cmd
  echo ^G
  waitfor /T 3 waiting
  ^Z
  1 個のファイルをコピーしました.
  >start /min cmd /d/c beep.cmd
  とするけどもっといい手はないかなと.

  803 :デフォルトの名無しさん:2020/05/23(土) 23:00:15.85 ID:H5g1ckea
  ああstartで自分を呼んで鳴らせばいいんだ.
  自己解決しました.

  804 :デフォルトの名無しさん:2020/05/24(日) 00:25:04.68 ID:VYuvM9gt
  >>802
  echo ^G>beep.dat
  としておいて.
  type beep.dat
  beep.dat は 0x07 (1byte)だけ.

  805 :デフォルトの名無しさん:2020/05/24(日) 00:40:12.55 ID:f4O9jhZ+
  その手がWindows Terminalでは使えないって話.
  https://aka.ms/terminal-documentation
  Windows ターミナルの概要 | Microsoft Docs

  806 :デフォルトの名無しさん:2020/05/24(日) 00:46:46.59 ID:VYuvM9gt
  >>805
  そうでしたか.
  Windows Terminal, 使うか.

  807 :デフォルトの名無しさん:2020/06/03(水) 20:30:01.66 ID:HabAm56l
  バッチでやるような処理でも.
  勉強兼ねてpowershell使って処理するようにしたほうがいいですか?

  808 :デフォルトの名無しさん:2020/06/03(水) 20:31:25.42 ID:5eIQQTQm
  勉強でなら, そりゃそうだろと言うしかないね.

  809 :デフォルトの名無しさん:2020/06/03(水) 20:32:34.71 ID:HabAm56l
  実務上はどうです?
  バッチの方が情報多いからいいんですか?

  810 :デフォルトの名無しさん:2020/06/03(水) 21:04:50.01 ID:mm84GRB0
  >>809
  どういう現場か知らないけど.
  Widn7 SP1 PSv2 縛り.
  なんて現場でPS書きたいとか思わないね.
  使わせてくれる現場なら使うべきだし, そうでないならバッチをシコシコ書くしかないのよ.

  811 :デフォルトの名無しさん:2020/06/03(水) 21:27:53.38 ID:QZ+HyrOs
  シコシコかくのよ.

  812 :デフォルトの名無しさん:2020/06/03(水) 22:11:19.84 ID:JNM2fzED
  PSでできること=C#でできることだからバッチとは全然できることが違うよ.
  PSv2でも十分バッチとは天地の差がある.

  813 :デフォルトの名無しさん:2020/06/03(水) 22:22:36.62 ID:5eIQQTQm
  元の質問が, 「バッチでやるような処理でも」なんだけどな.
  ちゃんと読んでるか?

  814 :デフォルトの名無しさん:2020/06/03(水) 23:24:38.53 ID:Gm6SBE/O
  >>809
  情報量ならPowerShellの方が上だし.
  TechnetフォーラムならPowerShellのカテゴリーあるし.
  ポケットリファレンスの著者である牟田口大介まで出没している.
  ストアアプリのインストールとかはPowerShell必須だし.
  バッチのみじゃ書けない物も割と多い.
  処理の内容は忘れたけどバッチでやれた事を.
  PowerShellで書いたらキー入力を要求されて.
  かえってバッチの方が良かった場合もあるけど.
  そんなパターンは圧倒的に少ないと思う.
  でもウチの場合, PowerShell使いがいないから.
  というのが最大の理由で実務はバッチだらけ.
  良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき.
  個人の感想ならばPowerShellって.
  バージョンが上がって非互換が出そうなので避けたい.

  815 :デフォルトの名無しさん:2020/06/04(木) 09:41:35.56 ID:Di3Z81qX
  9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ.
  意識していれば, バッチファイルの利用は難しくないと思う.
  VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく, WSHバージョン5.1以降かどうかさえ.
  気をつけていれば概ね大丈夫だと思う.
  それらに比べてPowerShellは, 個人的にはハードルが極めて高い.

  816 :デフォルトの名無しさん:2020/06/04(木) 15:05:12.56 ID:iofqxoab
  >>813
  当然「バッチでやるような処理でも」PSなら十二分にこなせるよ.
  このスレで話題になるような変なクセや制限もないしね.

  817 :デフォルトの名無しさん:2020/06/04(木) 15:12:12.70 ID:iofqxoab
  >>814
  PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ.

  818 :デフォルトの名無しさん:2020/06/04(木) 15:16:33.10 ID:efimIni8
  BATの典型的なものとしては.
  シーケンシャルに.
  ・外部アプリ呼び出し.
  ・ファイルコピーや移動.
  ・メッセージ表示.
  であって, こんなものをPowerShellで書く必要は無いし, ステップ数も余分にいる.

  819 :デフォルトの名無しさん:2020/06/04(木) 21:18:27.58 ID:U7KCPoET
  PSの話したいなら該当スレへ.
  ここでするのはスレチ.

  820 :デフォルトの名無しさん:2020/06/05(金) 09:26:58.17 ID:YNSaAEsR
  バッチファイル内で, 複数の文字列の一部だけを羅列して, それをまとめて補完したものを変数に入れたい.
  具体的には.
  set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat
  %LOG%\newsplus\*.dat...
  のように指定するのではなく.
  setlocal enabledelayed...
  for %%f in (tech prog win newsplus) do (
    set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
  )
  のようにして, 増減や修正を簡単に出来るようにしたい.
  したいんだけど, なんかうまく動いてくれない.
  何かヒントもらえますか?

  821 :デフォルトの名無しさん:2020/06/05(金) 10:14:13.82 ID:YNSaAEsR
  自己解決.
  どうやらこんな感じで動きそう.
  for %%f in (tech prog win newsplus) do (
    call :APPEND %%f
  )
  :APPEND
  set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
  goto :EOF

  822 :デフォルトの名無しさん:2020/06/05(金) 11:33:35.77 ID:xkF+o6Lc
  >>820
  setlocal enabledelayedexpansion
  for %%f in (tech prog win newsplus) do (
    set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
  )
  じゃダメなの?

  823 :デフォルトの名無しさん:2020/06/05(金) 11:53:35.34 ID:YNSaAEsR
  あれ?出来ますね.
  実は!で囲むのもやってみた(つもりだった)んだけど.
  (たぶん, どっか別のちょっとしたところでミスしてて)
  その時はうまく動かなかったんですね.
  失礼しました.

  824 :810:2020/06/06(土) 00:36:10.94 ID:ZNTMwsEj
  >>817
  業務システムのくせに  -v の無いPSスクリプトを Win7 上で動かしてるクソシステム, あるよ. 改修したくもないけど.
  PS は ver.3 で破壊的変更がなされたから, ver.2 に合わせて勉強するだけ無駄だと言われている.
  core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階.
  また, PS が「管理の自動化」を目指しているのに対して, バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う.
  おまけにバッチとWSHはもう仕様変更が無いという強みがある.
  等価なものを個人的に PS でリライトしてみる, はいいと思うけど, 本番環境に入れるのはNGかな・・・.

  825 :デフォルトの名無しさん:2020/06/09(火) 07:37:38.68 ID:xQo5RGeQ
  長々と更新してもcmd変わらず放置.
  不具合あればPS使えということか.
  バッチに未来は無い.

  826 :デフォルトの名無しさん:2020/06/09(火) 21:59:44.80 ID:Phlj4K/L
  cmdはもう更新しないってアナウンス出てなかったっけ?

  827 :デフォルトの名無しさん:2020/06/09(火) 22:16:29.17 ID:aAgqnyde
  バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし.
  現状維持でこのまま使えたらそれでいいよ.

  828 :デフォルトの名無しさん:2020/06/14(日) 08:05:01.57 ID:Nip9LUw0
  教えてください.
  引数以外でショートカットの情報をバッチに渡すことはできますか?
  バッチ自体のファイル名, パス名を取得する方法はよく見かけますが, ,
  ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?

  829 :デフォルトの名無しさん:2020/06/14(日) 10:09:40.34 ID:Rvue1P4U
  ショートカットって何の?起動したバッチファイルのもの?
  ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも.
  どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな.

  830 :デフォルトの名無しさん:2020/06/14(日) 10:41:39.28 ID:Nip9LUw0
  >>829
  やっぱり無理そうですね.
  ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが, , ,
  %0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした.
  何か方法ないのかなと思い, , あきらめます.
  ご回答ありがとうございます.

  831 :デフォルトの名無しさん:2020/06/14(日) 11:24:19.06 ID:2FaHAA2B
  ショートカットのプロパティで作業フォルダを弄ればいいだろ.
  リンク先のバッチで%cd%参照.
  ファイル名なんてリンク先に合わせりゃいいだろ.

  832 :デフォルトの名無しさん:2020/06/14(日) 11:26:00.19 ID:Q6c7IGAp
  >>830
  もしショートカットファイルから元のファイル名を取得したいってことなら.
  wmicコマンドとか使えば良いんじゃない?
  https://stackoverflow.com/a/29650022

  833 :デフォルトの名無しさん:2020/06/14(日) 11:45:22.44 ID:2FaHAA2B
  プロパティのリンク先に自分のフルパスを追加してもいい.
  リンク先のバッチで%1参照.

  834 :デフォルトの名無しさん:2020/06/14(日) 12:14:20.27 ID:Nip9LUw0
  >>831
  仰る通り.
  それがメンドーだな, と思っただけです.
  プロパティ弄らずにファイル名変更だけで挙動変えようかと, , ,

  835 :デフォルトの名無しさん:2020/06/14(日) 12:15:45.60 ID:Nip9LUw0
  >>832
  そういうの, いろいろありますね.
  VBSとかPSとか.
  後者をSendToに入れてフォルダ内調査に使ったりしてます.

  836 :デフォルトの名無しさん:2020/06/14(日) 12:16:13.25 ID:Rvue1P4U
  ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの?
  ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど.

  837 :デフォルトの名無しさん:2020/06/14(日) 12:17:49.77 ID:Nip9LUw0
  >>833
  プロパティ弄るなら, 素直に引数指定すれば良さそうです.
  みなさんご意見ありがとうございます.

  838 :デフォルトの名無しさん:2020/06/14(日) 12:18:03.34 ID:2FaHAA2B
  作業フォルダを空欄にするだけなんだけど.

  839 :デフォルトの名無しさん:2020/06/14(日) 12:20:20.62 ID:Nip9LUw0
  >>836
  ショートカットを別フォルダにコピーするだけで, そのショートカットの親フォルダをバッチに渡すということをしたかったです.
  ただのめんどくさがりです. すみません.

  840 :デフォルトの名無しさん:2020/06/14(日) 12:25:13.85 ID:Nip9LUw0
  ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました.
  ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした.
  みなさんおつきあい頂きありがとうございます.

  841 :デフォルトの名無しさん:2020/06/14(日) 12:32:21.09 ID:Rvue1P4U
  >>839
  それなら >>838 で可能.
  作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる.

  842 :デフォルトの名無しさん:2020/06/14(日) 12:47:38.30 ID:zWNqxiy9
  別フォルダにコピーする時点で親フォルダ分かってるんじゃない?

  843 :デフォルトの名無しさん:2020/06/14(日) 19:57:43.39 ID:Nip9LUw0
  >>841
  おおお, なるほど!
  StartInを指定しなければ, CurrentDirectoryは移動しないのか.
  リンクファイル名の方は無理そうですが, 親フォルダはこれでいけそうです.
  感謝!!
  VBAのApplication.Callerみたいなのが書ければいいんですけどね.

  844 :デフォルトの名無しさん:2020/06/14(日) 20:09:16.72 ID:2FaHAA2B
  作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな.
  あと, 管理者権限で実行したらC:\WINDOWS\system32になったりする.

  845 :デフォルトの名無しさん:2020/06/14(日) 20:15:00.02 ID:Nip9LUw0
  >>844
  そうなりますね. 気をつけます.

  846 :デフォルトの名無しさん:2020/06/14(日) 21:58:02.09 ID:Nip9LUw0
  すみません. もう1つ質問です.
  バッチ自身を最小化して起動するときどうされてますか?
  これが理由の1つでショートカット起動していたのですが, 代わりにバッチを使うとコンソールが表示されてしまいます.
  サイトでよく見かける, @If not "%~0"... というやつは, Win7のためか機能しません.
  普段は固定的に行う場合は, ショートカットやVBSをはさみ最小化実行しているのですが, ,
  うまい方法があれば教えてください.

  847 :デフォルトの名無しさん:2020/06/15(月) 14:19:29.38 ID:YYrFY+5A
  無い.

  848 :デフォルトの名無しさん:2020/06/15(月) 19:14:00.08 ID:X3dRtIQ2
  >>847
  了解!

  849 :デフォルトの名無しさん:2020/06/15(月) 19:21:32.94 ID:bzzr0fEY
  start

  850 :デフォルトの名無しさん:2020/06/15(月) 21:31:09.57 ID:xZsc1Mf0
  pause

  851 :デフォルトの名無しさん:2020/06/16(火) 06:44:47.17 ID:zfRgO9so
  PowerShell なら,
  # ショートカットファイルのフルパス.
  $fn = "フルパス"
  # ショートカットファイル(.lnk)から, リンク先パス(TargetPath)を読み取る.
  $link = $wsh.CreateShortcut( $fn )
  # 画面に表示する.
  Write-Host "$( $fn )`nTargetFile: $( $link.TargetPath )"

  852 :851:2020/06/16(火) 06:47:46.73 ID:zfRgO9so
  >>851
  修正.
  一番上に, これを入れて.
  $wsh = New-Object -ComObject WScript.Shell

  853 :デフォルトの名無しさん:2020/06/16(火) 09:13:19.74 ID:n71ojSL1
  wsh呼び出すならvbsでも使えばいいわけで・・・.

  854 :デフォルトの名無しさん:2020/06/16(火) 15:49:55.53 ID:0FicG8jZ
  リンク先バッチ本体をコピーしたらあかんの?

  855 :デフォルトの名無しさん:2020/06/16(火) 16:06:26.98 ID:0FicG8jZ
  動的に変化するのか?

  856 :デフォルトの名無しさん:2020/06/16(火) 22:29:49.48 ID:woSalLPH
  >>851
  あれ, まだ続いてましたね.
  えーと, リンクファイルの情報を取得するのではなくて, リンク先からリンク元を取得できないか, という相談でした.
  結論としては, .LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが,
  .Lnkのファイル名を取得する手段はない, と認識しました.
  もしかして, PowerShellなら取得できますか?

  857 :デフォルトの名無しさん:2020/06/16(火) 22:38:20.68 ID:woSalLPH
  >>854
  Batchを複製すればできますね.
  でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい.
  ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる.
  (現時点, これで代用してます)
  でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった.
  で, バッチを最小化で生起動する方法は, , 無い!という結論です.
  というところで諦めています.

  858 :デフォルトの名無しさん:2020/06/16(火) 23:14:22.53 ID:yH2E1+y3
  おまえ要領を得ないって良く言われるだろ.
  何を最小化したいの?コンソール画面?バッチから起動したアプリ?
  アプリ起動にバッチを介するようになって困っているようだけど.
  コンソールはすぐ消えるから大して困らんでしょ.
  その一瞬も困るってこと?
  コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
  アプリならstart /min
  そのバッチを貼れない理由でもあるの?

  859 :デフォルトの名無しさん:2020/06/16(火) 23:24:30.52 ID:C/0BZ8DU
  そんなへんなことするようなものは俺なら要らんと言うな.
  説明書に手順を書くなり, 起動用のps1やvbsでも同梱しとけばいいと思う.

  860 :デフォルトの名無しさん:2020/06/16(火) 23:48:59.36 ID:zfRgO9so
  漏れなんか, ダブルクリックで, Ruby スクリプトを実行するために,
  test.vbs に, 起動部分だけを書いてる.
  CreateObject("WScript.Shell").Run "ruby .\script.rb",0

  861 :デフォルトの名無しさん:2020/06/17(水) 02:23:38.88 ID:1C8hVY+b
  もうやめろ. くだらねえ.

  862 :デフォルトの名無しさん:2020/06/17(水) 03:27:41.75 ID:pABU+G65
  だから結論はでた, 諦めてると言ってるだろ.
  返してくれた方がいたので返答しただけ.
  ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ.
  はい, 本件Close.
  有用な情報提供いただいた皆さんありがとう.

  863 :デフォルトの名無しさん:2020/06/17(水) 07:10:17.14 ID:jbUYdqRV
  よくわからんけど start /b /min を使うのではだめなのかしら.
  と独り言.

  864 :デフォルトの名無しさん:2020/06/17(水) 08:16:21.96 ID:tu0J1xQb
  >>863
  /bスイッチって何でしたっけ?

  865 :デフォルトの名無しさん:2020/06/18(木) 03:29:25.23 ID:00is865e
  >>858
  >その一瞬も困るってこと?
  悪いことしたい時に, それでは困るよね?

  866 :デフォルトの名無しさん:2020/06/18(木) 07:09:08.15 ID:EpKOfb9E
  >>865
  単なる気分の問題.
  本件はクローズ. 皆さんありがとうね.

  867 :デフォルトの名無しさん:2020/06/18(木) 15:00:22.59 ID:L9lBZl+g
  そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな.

  868 :デフォルトの名無しさん:2020/06/18(木) 20:51:24.52 ID:sqKtSFf3
  ここまでの流れで誰も配布するなんて話してないのにお前は何を言ってるんだ?
  866の好きにさせとけよ.

  869 :デフォルトの名無しさん:2020/06/18(木) 22:53:59.19 ID:EpKOfb9E
  >>868
  はい, 自分用です. ご安心を.
  中身もつまらない小物ツールですので.
  技術的な情報が知りたかっただけです.
  また教えてください.

  870 :デフォルトの名無しさん:2020/06/19(金) 00:05:08.15 ID:HgOFevSP
  クローズしたそうだが.
  コンソール画面を見たくないのなら.
  レイアウトの位置を右下に詰めろ.
  ほとんど見えなくなるぞ.

  871 :デフォルトの名無しさん:2020/06/19(金) 00:27:18.52 ID:TPV7TWbz
  殆どじゃダメなんだよ.
  神経質な奴に見つけられてしまう.

  872 :デフォルトの名無しさん:2020/06/19(金) 00:33:46.55 ID:HgOFevSP
  お前, 質問者か?

  873 :デフォルトの名無しさん:2020/06/19(金) 03:17:24.40 ID:7A38Sw4m
  テキストファイルから空行を除く方法.
  findstr /R .
  ただし空白やタブのある空行は失敗.

  874 :デフォルトの名無しさん:2020/06/19(金) 05:11:07.46 ID:HgOFevSP
  >>873
  タブやスペースだけの行をスキップするには.
  findstr /r /c:"[^ ]"
  ^と]の間にタブとスペース入力.
  バッチではエディタでタブ入力できるが.
  コマンドプロンプトでタブ入力するには cmd /f:off で.

  875 :デフォルトの名無しさん:2020/06/19(金) 05:34:11.61 ID:HgOFevSP
  for~do~echoでやった方がいいかも.

  876 :デフォルトの名無しさん:2020/06/27(土) 20:08:23.94 ID:dZCme2QN
  テキストファイルに入ってる文字列を.
  一行ごとに読み込んで.
  フォルダを作るバッチをつくったのですが.
  半角スペースの文字列が分割されてしまいます.
  これって対応策ありますか?

  877 :デフォルトの名無しさん:2020/06/27(土) 20:23:13.74 ID:7ozUCHmg
  >>876
  for /f "tokens=*" %%i in (data.txt) do md "%%~i"

  878 :デフォルトの名無しさん:2020/06/28(日) 21:21:38.87 ID:elMokmc1
  >>877
  できたサンクス.
  助かった.

  879 :デフォルトの名無しさん:2020/06/30(火) 15:01:18.03 ID:SwuJ9TNP
  ファイル名全角英字の大文字小文字を同じとみなしていた.
  A.txt に他フォルダのa.txtを上書きコピーしてもA, txtのままだった.
  Aaは全角英字.
  芸が細かい, いいか悪いかは別として.

  880 :デフォルトの名無しさん:2020/06/30(火) 19:03:57.21 ID:PSeL/c0z
  ワイルドカードの ? の仕様がイマイチ分からない.
  abc と abc1 のファイルがあったとして.
  >dir /b abc?
  abc
  abc1
  >dir /b ?abc
  ファイルが見つかりません.
  >dir /b a?bc
  ファイルが見つかりません.
  なぜ見つからないのか.
  1ないし0個の文字じゃないのか.

  881 :デフォルトの名無しさん:2020/06/30(火) 19:07:42.99 ID:/pl8PJcc
  ワイルドカードで?は任意の1文字を示す.

  882 :デフォルトの名無しさん:2020/06/30(火) 19:14:29.14 ID:PSeL/c0z
  では abc? で abc が一致するのはなぜ.

  883 :デフォルトの名無しさん:2020/06/30(火) 19:19:02.81 ID:/pl8PJcc
  abc.でマッチするからだと思う.

  884 :デフォルトの名無しさん:2020/06/30(火) 19:21:41.87 ID:PSeL/c0z
  なるほど. ありがとう.

  885 :デフォルトの名無しさん:2020/06/30(火) 19:28:18.05 ID:PSeL/c0z
  abc?? や abc??? でも一致するようだ.

  886 :デフォルトの名無しさん:2020/06/30(火) 19:49:40.78 ID:tIigavUn
  https://www.pg-fl.jp/program/dos/doscmd/str_wildcard.htm
  http://kayuitoko.blog129.fc2.com/blog-entry-2.html

  887 :デフォルトの名無しさん:2020/06/30(火) 19:59:31.31 ID:PSeL/c0z
  abc??.?? とかも一致するね. たぶん仕様というよりバグ.

  888 :デフォルトの名無しさん:2020/06/30(火) 21:39:19.92 ID:clO9Gt1K
  ピリオドが絡むとワイルドカードはおかしな動きするよ.
  filename_yyyy.mm.dd.dat
  みたいなもんが.
  dir *_????.??.??.dat
  で引っかからない. >>887 の言う通り, 多分バグ. ピリオド以降を拡張子とみなすみたい.
  filename_yyyy-mm-dd.dat
  として.
  dir *_????-??-??.dat
  だとちゃんと引っかかるから, 俺はファイル名に日付を付けるなら - を使っている.

  889 :デフォルトの名無しさん:2020/07/01(水) 07:22:43.96 ID:sbIkpZ+y
  ワイルドカードは色々とおかしい.
  >echo > "abc" & echo > " abc"
  >for %i in ("abc*") do @echo "%i"
  "abc"
  " abc"

  890 :デフォルトの名無しさん:2020/07/01(水) 07:57:25.88 ID:9hqgfVHi
  そっちはたぶん8.3形式が引っかかってるんだろう.

  891 :デフォルトの名無しさん:2020/07/04(土) 22:02:55.18 ID:r0U5W+Xd
  PC初心者です.
  初めてバッチファイルの作成にチャレンジしています.
  ドライブ(丸ごと)->別のドライブのフォルダ, にバックアップを取りたくてrobocopyを使ってミラーコピーをしました.
  コピーはうまくいくのですが, コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます.
  これはなぜでしょうか?回避方法はありますか?

  892 :デフォルトの名無しさん:2020/07/04(土) 22:37:12.45 ID:KIcU78VY
  >>891
  ggrks

  893 :デフォルトの名無しさん:2020/07/04(土) 22:39:29.92 ID:QUXtQ3do
  たぶん, A ファイルがあって, それを上書きする時に,
  安全確保のために一旦, 別のフォルダ・Recovery へコピーしてから, 上書きして,
  正常に上書きした後に, Recovery内のA を削除している.
  ただ, すべて正常に済んだ後に, Recoveryフォルダを削除し忘れているのだろう.

  894 :891:2020/07/05(日) 11:17:14.37 ID:eLIuBas1
  >>893
  ありがとうございます.
  バックアップ自体は問題なさそうなので, このままで使ってみようと思います.

  895 :デフォルトの名無しさん:2020/07/05(日) 15:06:46.22 ID:1amJ61U+
  >>893
  >>894
  コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの.
  ドライブを丸ごと robocopy すると強制的に SH 属性が付くから, 最後に attrib -S -H してやる必要があるし, >>894
  はそれをしてると思う.
  そしたら「Recovery」が見えるようになった, というだけの話でしょ・・・これ.
  コピー元のルートディレクトリに行って「dir /a」して確認してみ?

  896 :891:2020/07/07(火) 00:32:35.56 ID:TndHy5rX
  >>895
  「dir /a」して確認してみたところ, 仰る通りでした!「Recovery」フォルダは不要なので削除しました.
  有難うございました!

  897 :デフォルトの名無しさん:2020/07/08(水) 04:28:57.30 ID:lPT19RKJ
  超初歩的な質問いいですか?
  (1.)https://i.imgur.com/hyYJbJE.png
  (2.)https://i.imgur.com/REf3PXQ.png
  (3.)https://i.imgur.com/UIqO0ye.png
  (1.)のCというフォルダを中にある1.txt 2.txtごと(2.)にコピーして(3.)のようにしたい時, どう入力したらいいですか?
  すでに(3.)のような状態にある時もコピーして上書きしたいのですが.
  ググれって言われるのはわかってますが, ディレクトリがどうのこうのとか,
robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので.

  898 :デフォルトの名無しさん:2020/07/08(水) 04:57:01.58 ID:xPuqy2ih
  >>897
  せめて, 何を試してうまく行かなかった, とか試行錯誤の具体的な.
  過程があれば説明, 答えを教えてくれるひとがいるかも.

  899 :デフォルトの名無しさん:2020/07/08(水) 05:13:48.40 ID:H59ZusVp
  >>897
  普通にcopy使えよ.

  900 :デフォルトの名無しさん:2020/07/08(水) 05:29:09.34 ID:plYM8yLW
  >>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

  901 :デフォルトの名無しさん:2020/07/08(水) 05:44:34.05 ID:lPT19RKJ
  >>900
  どうもありがとうございました.
  自分でも色々やって試しててうまくいかず質問したのですが,
  原因が保存した文字コードがUTF-8だったためでした.
  ANSIに変えたらうまくいきました.

  902 :デフォルトの名無しさん:2020/07/08(水) 11:29:53.61 ID:Z8A6jaoN
  xcopy よりは, robocopy を使った方が良いのでは?
  xcopyは, あまり見ない.

  903 :デフォルトの名無しさん:2020/07/08(水) 12:24:18.71 ID:lp5P2pBO
  dosで使えなくなるだろ.

  904 :デフォルトの名無しさん:2020/07/08(水) 12:46:00.57 ID:Lb+zauke
  たしかに, DOSは, Xcopyまでだったか.
  pureDOSには, robocopyはないのだな.

  905 :デフォルトの名無しさん:2020/07/08(水) 12:56:46.06 ID:plYM8yLW
  robocopyは絶望的に遅い.
  複雑な条件がないのならxcopyがいい.

  906 :デフォルトの名無しさん:2020/07/08(水) 15:01:55.81 ID:z330e5aM
  robocopyは, ミラーリングで使用したときに,
  消される側にフォルダのシンボリックリンクがあると,
  リンク先実体フォルダ内のファイルごと消されるというバグが有る.
  /xjd /xjf /xj /sl 全部ダメ.
  怖くて使えない.

  907 :デフォルトの名無しさん:2020/07/08(水) 18:21:45.08 ID:ebRsk5Wi
  ま?

  908 :895:2020/07/08(水) 19:29:53.78 ID:fFkGRU4d
  >>896
  空なら大丈夫だと思うけど, 場合によってはそこに WinRE (Windows 回復環境)が入ることがある.
  (バグやディスク容量の関係)
  https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
  だから丸っきり不要ってわけでもないのだよ.

  909 :デフォルトの名無しさん:2020/07/09(木) 01:19:26.67 ID:oG8bZA2s
  http://itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html
  このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど.
  (ファイル名)が見つかりません. って表示が出るだけで上手くいかないけど何か抜けてるのかな?
  もちろん対象フォルダには移動している.

  910 :デフォルトの名無しさん:2020/07/09(木) 02:32:11.02 ID:zMPqHoYq
  >>909
  先頭のecho off をいったん外して, 変数がどう展開されてるか確認してみたら?

  911 :デフォルトの名無しさん:2020/07/09(木) 04:53:54.78 ID:gEWbrPAM
  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

  912 :デフォルトの名無しさん:2020/07/09(木) 06:30:12.62 ID:o2t2WZIU
  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

  913 :デフォルトの名無しさん:2020/07/09(木) 06:31:35.37 ID:o2t2WZIU
  ああ LastAccessTimeじゃくてLastWriteTime

  914 :デフォルトの名無しさん:2020/07/09(木) 13:30:39.43 ID:oG8bZA2s
  >>910
  初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした.
  そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?

  915 :デフォルトの名無しさん:2020/07/09(木) 16:17:08.38 ID:t1UM8kjV
  >>914
  ファイル名に相当する箇所をクオート.

  916 :デフォルトの名無しさん:2020/07/15(水) 06:27:24.24 ID:pJbYwVEp
  https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1
  setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください.
  pはPromptStringかな~と予想してるんですがaは全く見当がつかないです.

  917 :デフォルトの名無しさん:2020/07/15(水) 06:51:32.91 ID:73kyB1S/
  Arithmetic

  918 :デフォルトの名無しさん:2020/07/15(水) 15:46:16.46 ID:nRIpdjFe
  if 感染者数==0 (
  goto campaign
  ) else (
  goto campaign
  )

  919 :デフォルトの名無しさん:2020/07/15(水) 21:08:21.69 ID:NpGOzuTH
  w.

  920 :デフォルトの名無しさん:2020/07/15(水) 22:58:28.42 ID:SqApoBlS
  >>916
  MSの英語フォーラムとか.
  英語版StackOverFlowとか.
  Redditとか.
  で尋ねたら?英語で.
  本当に知りたいなら英語圏に聞け. 英語圏に.

  921 :デフォルトの名無しさん:2020/07/15(水) 23:48:35.91 ID:vc+VU4Sj
  >>917 が教えてくれてるよ.

  922 :デフォルトの名無しさん:2020/07/15(水) 23:53:31.66 ID:SqApoBlS
  >>921
  arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?

  923 :デフォルトの名無しさん:2020/07/16(木) 00:26:22.36 ID:3qBZIgLF
  /a は 単純に answer かな.

  924 :デフォルトの名無しさん:2020/07/16(木) 05:41:06.12 ID:smyagw08
  >>923
  まじで?
  いや普通にarithmeticでしょ. w.

  925 :デフォルトの名無しさん:2020/07/16(木) 11:47:24.17 ID:lU9BoPI+
  以降あいうえお作文スレ.

  926 :デフォルトの名無しさん:2020/07/16(木) 13:33:25.11 ID:d6//+ANU
  Arithmeticって+-*/のことじゃないの?

  927 :デフォルトの名無しさん:2020/07/17(金) 00:25:33.43 ID:C6Q8EyYV
  +とか-はarithmetic operatorだね.

  928 :デフォルトの名無しさん:2020/07/18(土) 01:59:17.03 ID:6qVTTMhl
  大体は理想通りに出来たのですが時々不要な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

  929 :デフォルトの名無しさん:2020/07/18(土) 05:56:42.11 ID:mgWYGhz7
  if not "%~1"=="" START "" %1

  930 :デフォルトの名無しさん:2020/07/18(土) 08:09:21.26 ID:ddPranTH
  if exist "%~1" start "" "%~1"

  931 :デフォルトの名無しさん:2020/07/18(土) 08:50:03.50 ID:ddPranTH
  for /l %%i in (1, 1, 6) do (if defined TARGET_EXE%%i call :F_NM
  "%%TARGET_EXE%%i%%")

  932 :デフォルトの名無しさん:2020/07/18(土) 14:36:51.45 ID:4sfyyT7O
  >>929->>931
  ありがとうございます.
  not exist definedの違いなど勉強して盛り込んでみます.

  933 :デフォルトの名無しさん:2020/07/18(土) 15:31:48.20 ID:GUFQRDdz
  >>929
  すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?

  934 :デフォルトの名無しさん:2020/07/18(土) 15:40:41.02 ID:VVrReUQE
  start /?
  最初のは "タイトル"

  935 :デフォルトの名無しさん:2020/07/18(土) 19:10:23.40 ID:mgWYGhz7
  >>933
  %1の引用符なしが%~1
  だから"%~1"は二重がけではない.

  936 :デフォルトの名無しさん:2020/07/18(土) 20:08:37.75 ID:xxg3trOa
  "" START ""
  に見えたってことなら.
  if not "%~1"=="" (
  START "" %1
  )
  こうね.

  937 :デフォルトの名無しさん:2020/07/19(日) 00:01:19.79 ID:nPfUu10f
  >>933
  ちなみに"start"でもダメ.
  一般的に内部コマンドは引用符で囲むとエラーになる.
  昔はstartが外部コマンドだった時もあったが.

  938 :デフォルトの名無しさん:2020/07/19(日) 00:15:51.03 ID:nmSNkapE
  >>936
  完全にこれでしたすみません.

  939 :デフォルトの名無しさん:2020/07/31(金) 20:28:20.67 ID:uhGaPqk6
  面白い書き方見付けた.
  c:\APP\DoeView>popd
  c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul2>&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]

  940 :デフォルトの名無しさん:2020/08/01(土) 00:13:59.61 ID:oGghCVi0
  >>939
  解説お願いします.

  941 :デフォルトの名無しさん:2020/08/01(土) 01:53:16.42 ID:mxUlZpQQ
  他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています.
  :INPUT
  set /p INP=
  if "%INP%"=="コマンド1" (
  処理1
  echo 結果1
  goto INPUT)
  if "%INP%"=="コマンド2" (
  処理2
  echo 結果2
  goto INPUT)
  ・・・.
  goto INPUT
  こんな感じにしたんですが, コマンドが連続で送られてくると取りこぼしてしまうようです.
  何か対策は無いでしょうか?

  942 :デフォルトの名無しさん:2020/08/01(土) 06:07:29.27 ID:hnL660kY
  他のとやらが標準出力読めるなら.
  set /p INP=inputok
  読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか.

  943 :デフォルトの名無しさん:2020/08/01(土) 10:06:48.10 ID:KdkXblI6
  >>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]を表示してるだけだな.

  944 :デフォルトの名無しさん:2020/08/01(土) 15:48:10.34 ID:mxUlZpQQ
  >>942
  やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません・・・.
  やっぱ無理ですかね・・・.

  945 :デフォルトの名無しさん:2020/08/01(土) 16:20:21.81 ID:hnL660kY
  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に書き出しじゃダメなん?

  946 :デフォルトの名無しさん:2020/08/01(土) 17:49:00.41 ID:y/Re9bvj
  >>944
  実行速度を気にしないゆっくりでいいのなら,
  tasklist に実行するプログラムがあれば待機する.
  実行するプログラムの終了コード(errorlevel)の癖がわかっているなら.
  errorlevelで終わったかそうかわかるかも.

  947 :デフォルトの名無しさん:2020/08/01(土) 23:16:08.23 ID:mxUlZpQQ
  どうも「相手のプログラム」がイメージしづらいようなので, プログラムそのものを貼ります.
  将棋所.
  http://shogidokoro.starfree.jp/index.html
  USIプロトコル.
  http://shogidokoro.starfree.jp/usi.html
  USIプロトコル対応の将棋エンジンをバッチファイルで作る, という遊びをしようとしています.
  現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが,
  対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず, readyokを返せない, 等でまともに動きません.
  デバッグウィンドウからコマンドを送れば一応動きますが・・・.
  >>945
  一旦txtに出力するのは考えましたが, 具体的な書き方が思いつきません・・・.
  将棋所に登録するバッチファイルと, コマンドを処理するバッチファイルの2つに分ける,
  とかも考えたんですが, 結局その2つのやり取りをどうすれば良いのか・・・.

  948 :デフォルトの名無しさん:2020/08/02(日) 00:01:49.63 ID:SCuZm8dn
  >エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります.
  guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う.
  制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな.
  Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか.
  これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも.
  思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも.

  949 :デフォルトの名無しさん:2020/08/02(日) 00:12:10.36 ID:SCuZm8dn
  > setoptionとisreadyが連続で送られてきてisreadyを認識できず, readyokを返せない.
  あーこの時点で無理なら厳しいね.
  バッファ用としてのプログラムを間に挟まないと.
  で, バッファ挟むくらいならどうせなら制御も・・・てなるだろうし.

  950 :947:2020/08/02(日) 15:10:30.75 ID:pqbO4ExB
  >>949
  やっぱそうですか・・・.
  残念ですが諦めます.
  ありがとうございました.

  951 :デフォルトの名無しさん:2020/08/07(金) 17:37:19.06 ID:ztGuRGFM
  フォルダが複数あり, フォルダ内の先頭のファイルネームをフォルダ名としたいです.
  これを.
  フォルダ1
  +ファイル1
  +ファイル2
  フォルダ2
  +ファイル1
  +ファイル2
  こうしたいです.
  ファイル1
  +ファイル1
  +ファイル2
  ファイル1
  +ファイル1
  +ファイル2
  フォルダ名が重複した場合の処理も必要かもしれないです.
  バッチは読みにくすぎですね.

  952 :デフォルトの名無しさん:2020/08/07(金) 22:11:16.88 ID:wnzPeWR5
  >>951
  そもそもツリー表現が変だと思う.
  +フォルダ1
  |+ファイル1
  |+ファイル2
  +フォルダ2
    +ファイル1
    +ファイル2
  tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?

  953 :デフォルトの名無しさん:2020/08/07(金) 22:17:23.17 ID:5wWI/sIC
  >>951
  エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど.
  それを考慮する必要あるの?

  954 :デフォルトの名無しさん:2020/08/08(土) 00:00:00.04 ID:c43C7xo+
  for /r %%i in (.)で下位フォルダ名取得.
      そのフォルダ内の最初のファイル名を取得(ソート指定)
      対象フォルダ名の変更.
  もしやるならvbs噛ませると思う.

  955 :デフォルトの名無しさん:2020/08/08(土) 05:43:20.34 ID:jNP2OM4q
  >>953
  とりあえずいらないですが, 名前順で並び替えた場合, 先頭にくるものをフォルダ名としたいです.

  956 :デフォルトの名無しさん:2020/08/08(土) 08:06:33.19 ID:ulitZ7VR
  >>955
  だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話.
  https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d

  957 :デフォルトの名無しさん:2020/08/08(土) 08:25:04.94 ID:HPaGwZBp
  どうでも良いことに拘るアホ.

  958 :デフォルトの名無しさん:2020/08/08(土) 09:01:08.32 ID:nLoi7MqI
  どうでもいいと言うならテメーがどっちかに決めろや.
  どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ.

  959 :デフォルトの名無しさん:2020/08/08(土) 09:25:59.89 ID:XY4Xe7zO
  ところで, 質問者本人は, どちらを・・・・.

  960 :デフォルトの名無しさん:2020/08/08(土) 09:32:21.16 ID:d2hZRkL/
  仕様を全て決めないと取り掛かれないマヌケ多すぎ.
  無能は本筋から外れたところで発狂してろ.

  961 :デフォルトの名無しさん:2020/08/08(土) 09:59:17.57 ID:jNP2OM4q
  >>956
  では今回はエクスプローラ側の並び順がいいです.

  962 :デフォルトの名無しさん:2020/08/08(土) 10:22:17.59 ID:cJmgrNkw
  >>960
  吠えるしかできない間抜け乙. w.
  >>961
  ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理.
  PowerShellかC#とかでやった方がいい.

  963 :デフォルトの名無しさん:2020/08/08(土) 11:11:14.30 ID:6XUmF/b8
  とりあえずこんな感じ?(先頭は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

  964 :デフォルトの名無しさん:2020/08/08(土) 11:14:22.00 ID:jNP2OM4q
  >>962
  ではcmdでいいです.
  あるいはpython環境のほうが楽ですか?
  >>963
  cmdのコードは理解が難しいですね, , ,

  965 :デフォルトの名無しさん:2020/08/08(土) 12:00:51.68 ID:jNP2OM4q
  globでやってみます.

  966 :デフォルトの名無しさん:2020/08/08(土) 12:16:11.89 ID:XwBZfJ1v
  リネーム処理とかはもう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

  967 :デフォルトの名無しさん:2020/08/08(土) 14:01:14.15 ID:jNP2OM4q
  pythonでは向いてないですか.

  968 :デフォルトの名無しさん:2020/08/08(土) 15:20:59.87 ID:IdUt1ux3
  pythonはスレチ.

  969 :デフォルトの名無しさん:2020/08/08(土) 15:22:12.94 ID:0U8ymD0p
  >>967
  ならPythonスレで聞けよ・・・.

  970 :デフォルトの名無しさん:2020/08/08(土) 16:11:06.79 ID:Uh3gedSc
  dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから.
  wshでリネーム用のバッチファイルを作る方が楽かな.
  wshではテキストを一括読みして変数に入れて.
  テキストを順次読みしながら[上矢印]の変数の内容をバッチファイルのコマンドに変更してく.
  下位ディレクトリや同一フォルダ名になるときの判定などもしやすい.
  もし失敗しても, 原因を見つけやすいしリカバリーもしやすい.

  971 :デフォルトの名無しさん:2020/08/09(日) 04:55:36.88 ID:z2n3MQIn
  仕様がないと取りかかれないと言うが.
  発注者が仕様を曖昧にしておくほうが罪深いだろ.
  要件定義が甘くて泣きをみるのはいつも現場だ.

  972 :デフォルトの名無しさん:2020/08/09(日) 05:42:25.80 ID:KFfdng53
  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 }

  973 :デフォルトの名無しさん:2020/08/09(日) 06:16:13.05 ID:wnSURbps
  そろそろ出てくるかと思ってた.

  974 :デフォルトの名無しさん:2020/08/09(日) 06:38:11.28 ID:fObB6/0g
  予測通り?

  975 :デフォルトの名無しさん:2020/08/09(日) 08:51:35.00 ID:AwQ8dIl5
  >>971
  それはSEが無能なだけ.
  一から十まで決定しなくても開発は進められる.

  976 :デフォルトの名無しさん:2020/08/09(日) 16:47:47.63 ID:0zxLTv88
  典型的な無能の発言だな.

  977 :デフォルトの名無しさん:2020/08/09(日) 23:22:34.78 ID:TBMXuXvF
  >>972
  オワコンRubyジジイが出てきたか.
  困るよね, こういう老害.
  >>975
  進められるけど手戻りして予算オーバーするわけね.
  お前が無能.

  978 :デフォルトの名無しさん:2020/08/10(月) 01:55:02.34 ID:9+h/1Osf
  >>977
  > 進められるけど手戻りして予算オーバーする.
  マヌケが要件定義を担当するとそうなるね. w.
  バカな開発チームだと, なぜか「ユーザーが悪い」という認識になる. ww.

  979 :デフォルトの名無しさん:2020/08/10(月) 03:38:30.58 ID:1F6bB0mG
  あいまいなのはユーザーが自分でも要求を把握しきっていないためだから.
  あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ.

  980 :デフォルトの名無しさん:2020/08/10(月) 04:21:21.96 ID:mFEy/HZR
  > あいまいなのはユーザーが自分でも要求を把握しきっていないため.
  ブレない軸を導き出せないような無能SEは多いよね.
  ある程度ブレてもダメージが少ないように開発するのが主流ですよ.

  981 :デフォルトの名無しさん:2020/08/10(月) 11:53:14.80 ID:ZLJuvAm6
  ある程度ブレても, いいように開発できればいいのですけれどもね.
  時折, ニュースでも, 開発できなかったということで, クライアント側と,
  メーカー側で裁判になっていますから, 難しいのだろうと思うのですが.

  982 :デフォルトの名無しさん:2020/08/10(月) 21:32:34.56 ID:+SLQPb+P
  >>981
  それは折衝役がシステム開発に疎いだけ.
  営業トークだけの人間が事態を悪化させる.

  983 :デフォルトの名無しさん:2020/08/13(木) 21:47:50.59 ID:5FyzI8Jm
  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ファイルでどのように書けば出来ますか?

  984 :デフォルトの名無しさん:2020/08/13(木) 22:00:40.82 ID:E452L2zK
  >>983
  情報不足.
  ・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ.
  ・update の日付が更新されなかった場合はどうするの?
  ・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
  書きようはあるが, for /? と打って自分で調べた方が早いだろ, これは.
  どこかの新入社員だとか学生の課題っぽいな・・・.

  985 :デフォルトの名無しさん:2020/08/14(金) 08:32:48.63 ID:SCMnTycc
  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

  986 :デフォルトの名無しさん:2020/08/14(金) 09:14:47.97 ID:oJspCYOK
  イヤミでは, なく止したら? <Ruby

  987 :デフォルトの名無しさん:2020/08/14(金) 09:32:16.73 ID:cdtRNbgQ
  Swiss File Knife

  988 :デフォルトの名無しさん:2020/08/14(金) 09:39:33.54 ID:dCe/n24a
  ・.

  989 :デフォルトの名無しさん:2020/08/14(金) 14:59:12.49 ID:uGqrrAzw
  >>983
  @echo off
  set src=Plugins\update.txt
  set ini=Soft.ini
  for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Updatetime"
  "%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で読んで行番号を表示させる.

  990 :デフォルトの名無しさん:2020/08/14(金) 21:06:33.51 ID:II+YlR7/
  ・.

  991 :デフォルトの名無しさん:2020/08/14(金) 22:02:35.58 ID:TmzvbeJo
  >>995
  ウンコみたいにダサいコードをよく晒せるな.
  生きてて楽しい?

  992 :デフォルトの名無しさん:2020/08/14(金) 22:14:12.37 ID:B6QaDwta
  未来予知乙.
  生きてる価値もないな. w.

  993 :デフォルトの名無しさん:2020/08/14(金) 22:43:27.80 ID:9FGl+Ien
  低能Ruby厨か.

  994 :デフォルトの名無しさん:2020/08/14(金) 23:06:43.67 ID:TmzvbeJo
  リダイレクトカードオープン!
  >>991 から >>995 へのアンカーは >>985 へリダイレクトされる!
  が, Ruby爺は人格障害者だった!
  精神的ダメージを受けていない!
  Ruby爺がVZ爺を召喚しようとしている!
  が, 自分自身だったので召喚できない!
  Ruby爺がダサいコードを唱え始めた!
  似非プログラマーは発狂した!
  歴戦のプログラマーは何も感じていない!
  歴戦のプログラマーの攻撃!
  Ruby爺は5のダメージ!
  歴戦のプログラマーはRuby爺をやっつけた!
  経験値を0exp, ゴールドを0G 手に入れた!
  「何だよ無職ニートの爺かよ・・・」と歴戦のプログラマーは思った.

  995 :デフォルトの名無しさん:2020/08/14(金) 23:10:45.52 ID:SCMnTycc
  Windows には, ini ファイルを読み書きできる, コマンド・アプリは無いの?

  996 :デフォルトの名無しさん:2020/08/14(金) 23:35:08.04 ID:LY+T9Pmp
  EDLIN

  997 :デフォルトの名無しさん:2020/08/15(土) 00:03:00.44 ID:fUIncIgN
  ・.

  998 :デフォルトの名無しさん:2020/08/15(土) 01:45:30.34 ID:t8slxubu
  次スレは?

  999 :デフォルトの名無しさん:2020/08/15(土) 02:14:16.82 ID:RWxrHj8y
  https://www.vector.co.jp/vpack/filearea/dos/util/bat/

  1000 :デフォルトの名無しさん:2020/08/15(土) 06:59:18.06 ID:R7NunwzB
  質問いいでしょうか.

  1001 :1001:Over 1000 Thread
  このスレッドは1000を超えました.
  新しいスレッドを立ててください.
  life time: 632日 16時間 7分 11秒.

  1002 :1002:Over 1000 Thread

1002コメント_363KB
全部_前100_次100_最新50
*スマホ版*_*掲示板に戻る*_*ULA版*
レス数が1000を超えています. これ以上書き込みはできません.
read.cgi ver 07.2.6 2018/12 Walang Kapalit *
Cipher Simian *


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/