【.cmd】 バッチファイルスクリプト %11 【.bat】at TECH
【.cmd】 バッチファイルスクリプト %11 【.bat】 - 暇つぶし2ch799:デフォルトの名無しさん
16/11/17 01:41:34.94 3AVvQ2An.net
DOS/Windowsでは、単にabcとするのが普通で.\abcとは書かないかな

800:デフォルトの名無しさん
16/11/18 00:23:10.73 MVrqW6/3.net
さらに複数パターンの一致を検出してみる

for /r /d %%i in ("abc.*" "xyz.*") do if "%%~xi"=="" echo "%%~fi"

801:デフォルトの名無しさん
16/11/18 05:45:03.27 aprTvklx.net
>>765
は?

802:デフォルトの名無しさん
16/11/18 07:12:41.73 MVrqW6/3.net
フォルダに拡張子が無いとしたら
dir /ad /b /s abc.*
で良さそう

803:デフォルトの名無しさん
16/11/18 15:43:00.69 MssNdFsD.net
>>766
>>768
"abc.*"だと"abc."が最低条件になって"abc"は除外されるものだと思ってたけど"abc"も出てくるね
実際は末尾"."のフォルダは作れないから拡張子の付いているフォルダしか出ないと思ってた
なんで???"."て特殊なの?ちょっと目からウロコ

804:デフォルトの名無しさん
16/11/18 16:29:03.81 TqE/rt71.net
もともとドットは拡張子の区切り記号だったわけで
abc. = abc
Windowsになって複数のドットも付けられるようになったが
ドット2つ使うとファイル管理領域も2倍使う結果に

805:デフォルトの名無しさん
16/11/18 16:44:12.24 MssNdFsD.net
拡張子の区切り記号なのは分かるけどそれが
abc.==abc
となる理由が分からない
ドットが区切り記号だからファイル名(文字列)と見做さず比較の際に無視されるとかなのかな?

806:デフォルトの名無しさん
16/11/18 16:52:38.55 TqE/rt71.net
ファイル管理領域は、ファイル名部分と拡張子部分とに分かれており
ドットはその管理領域のどこにも書き込まれない
単に区分けする識別子の役割りしか持たない
つまり、管理上は、ファイル名=abc,拡張子=NULLってなってる
だからabc.とabcの見分けは付かない
エクスプローラでファイルをabc.で作成したってabcファイルが作られるだけ

807:デフォルトの名無しさん
16/11/18 17:06:48.25 TqE/rt71.net
なんか勘違いしてた気がする
LFNではドットもそのまま入ってる

808:デフォルトの名無しさん
16/11/18 17:12:57.12 MssNdFsD.net
>>772
>ドットはその管理領域のどこにも書き込まれない
>管理上は、ファイル名=abc,拡張子=NULL
>だからabc.とabcの見分けは付かない
詳しい説明をありがとうございます
納得出来ました。もうなんと言って良いのやら
ひとつ理解が深まりました。ドラクエのレベルアップの音が鳴り響いた気分です

809:デフォルトの名無しさん
16/11/18 17:24:08.15 MssNdFsD.net
コマンド側が古い仕様を引き摺ってると判断しておきます

810:デフォルトの名無しさん
16/11/18 18:07:23.95 TqE/rt71.net
おそらくコマンドやエクスプローラは、最後のドットに特別な意味(拡張子)を持たせて
ドットだけなら削除する仕様なんだろう

811:デフォルトの名無しさん
16/11/18 21:00:10.73 TqE/rt71.net
ピリオドと半角空白には色々と罠があるかも
md aaa
cd "aaa....."
md "abc. . . " (エクスプローラでのフォルダ・ファイル作成も同じ)
dir "abc.."
dir "abc..."(abc..とは異なる結果に)

812:デフォルトの名無しさん
16/11/19 03:25:52.98 JjiTnU56.net
#!/bin/bash
# すれ違いですまないが

apt-get moo #に見えてきた

echo "Enter to Exit"
read wait

813:デフォルトの名無しさん
16/11/19 04:02:30.76 6BFx2XsN.net
すれ違い杉

814:デフォルトの名無しさん
16/11/19 10:40:41.73 I/7/X0k0.net
 ケイン


815:・コスギ  英才・出木杉  ・・・・板違い



816:デフォルトの名無しさん
16/11/19 11:47:06.46 HaGDkE41.net
>>772-773
合ってるよ
短い名前(いわゆる 8.3形式)ではカレントディレクトリの "." と ".." を除いて "." は記録されない
URLリンク(ja.m.wikipedia.org)
LFN ではそのまま Unicode で記録される

817:デフォルトの名無しさん
16/11/20 01:32:41.69 5hQ1kNDg.net
%random% って代入すると機能を失って、クリアするとまた復活するのね。
一時変数の名前に使うとちょっと便利かも

818:デフォルトの名無しさん
16/11/20 08:06:59.15 plO26YRe.net
777

819:デフォルトの名無しさん
16/11/20 22:07:31.97 mYrLDeuJ.net
>>782
バグの元だろ

820:デフォルトの名無しさん
16/11/21 02:59:43.79 bNk8tUAy.net
%errorlevel%とか%date%に代入するとかもやりそうな気配

821:デフォルトの名無しさん
16/11/21 18:40:20.55 1UsqdqxT.net
win10が時期アプデでコマンドラインシェルをデフォルトから格下げだってさ。えらいこっちゃ

fossBytesに11月19日(米国時間)に掲載された記事「Microsoft Replaces Command Prompt
With PowerShell As Windows 10 Default Shell」が、Windows 10のデフォルトシェルが
コマンドプロンプトからPowerShellに変更されると伝えた。Windows 10 Insider Build 14971で
すでに入れ替えが実施されたと説明がある。

Windows 10 Insider Build 14971では、これ以外にもMicrosoft EdgeでEPUB電子ブックを読む
機能や新しいPaint 3Dアプリケーションの導入などが実施されている。

(後略)
URLリンク(news.mynavi.jp)

822:デフォルトの名無しさん
16/11/21 19:58:33.06 4eyhD8wV.net
>>786
まあそろそろいいかなって思うわ
慣れれば PowerShell めっちゃ便利やし

823:デフォルトの名無しさん
16/11/22 16:32:55.50 OivDuOyC.net
>>785
おもしろい、どうなるのだろう

824:デフォルトの名無しさん
16/11/23 04:53:34.68 lMEr/SWa.net
%参照は上書きの値、if errorlevel文には set errorlevelしても無効
set errorlevel=5 などバッチ内で errorlevelを自分で設定する場合は if errorlevel文は使えない
if %errorlevel% GEQ 1 などであれば可

825:デフォルトの名無しさん
16/11/23 09:54:12.77 pZmHnyz7.net
WindowsPEも起動したらPowershellで始まるの?
最新のヤツでもマトモに動かせないのに

826:デフォルトの名無しさん
16/11/24 00:02:10.88 b21vlpof.net
>>727>>728
ありがとうございます
返信遅くなりました

ただ、せっかくヒントを頂いたのですが、想像より自身のレベルに見合わないスクリプトでした。実際につくるのは先になりそうです……

827:デフォルトの名無しさん
16/11/24 00:50:33.49 aisAFXaT.net
>>791
>>727-728 はヒントじゃなくて720の要件の全部だぞ
721をbatで保存してそのbatに親フォルダAをドロップすれば720の通りになる

828:デフォルトの名無しさん
16/11/26 00:47:02.26 61EwoExF.net
>>727>>728>>792
ありがとうございます!できました
>>728の方が言っていた直しが正しく行えなかっただけでした
皆さん本当にありがとうございます

自分で書けるようにもなりたいのですが、皆さんどのようにバッチファイルを学んだのでしょうか
サイトなどを回ってもなかなか進まなくて……

829:デフォルトの名無しさん
16/11/26 02:10:39.28 CoCq2KiG.net
for /?
set /?
この二つ読んでわからないところをぐぐる

830:デフォルトの名無しさん
16/11/26 04:48:01.93 0eLSGHGV.net
「バッチ �


831:�門」でググって出て来るページを読む コマンド一覧を載せてるサイトを見てどんなコマンドがあるのか一通り目を通す(暗記までする必要なし) /?でヘルプ見ながら書いて一つ一つ試す pauseを挟みつつ期待した通りに動いてるか確認しながら書いていく 分からなければここで質問 自分の場合、リダイレクトとかエスケープとかcall set で遅延環境変数を使わない方法とかはここで教わった 何をやっているのか分からないものは必ず解読するようにすれば覚えていける 動作を理解していないとテストでは問題無く動いても本番でエラーになる事もあるからファイル操作させたりする場合は予めバックアップを取る 処理対象が大量にある場合などは1度に全てを処理せず何度かに分ける 721で難しそうなのはforのみ 最初のforで対象フォルダ("[*]*"にマッチするもの)を抽出してる for /d %%i in ([*]*) do echo %%i と分解してみれば分かりやすい for /f "tokens=1* delims=[]" %%j in ("%%~i") do delims=[] は "[" "]" の文字を区切り文字に指定 tokens=1* は1つ目のトークンを%%jに残りを%%kに "[aaa]あああ"であれば %%jに"aaa"が %%kに"あああ"が入る md "%%~j"&move /y "%%~i" "%%~j" フォルダ作成&移動 "[]あああ"なんてのがあると想定していない"あああ"フォルダに移動になるから注意ね



832:デフォルトの名無しさん
16/11/27 09:52:07.02 mLcTWF4w.net
おはようございます。
同一フォルダ内にある複数ファイル
a.jpg、あ.jpg、1.jpg等を一括で001-a.jpg、002-あ.jpg、003-1.jpgに連番を付加する
batファイルを教えて下さい!

833:デフォルトの名無しさん
16/11/27 11:17:31.27 2v7FHJZn.net
a,あ,1の順序付けにどういう規則をつけるの?
普通の昇順降順ではこの順番にならないけど

834:デフォルトの名無しさん
16/11/27 11:19:13.96 mLcTWF4w.net
紛らわしくてすいません。
普通の昇降順でお願いします。

835:デフォルトの名無しさん
16/11/27 11:33:53.80 2v7FHJZn.net
こういうのって結構難しいんだよね
例えば、
a.jpgと001-a.jpgの二つのファイルがあったら
先に001-a.jpgをリネームして001-001-a.jpgにしないと
ファイル名が重複してリネームできなくなるし
(さらに001-001-001-a.jpgがあったりすると...)

836:デフォルトの名無しさん
16/11/27 11:57:08.03 mLcTWF4w.net
単純に今あるファイル名の先頭に001や002と連番をつけるだけで大丈夫です。
この前作ったのですが誤ってファイルを消してしまって(泣

837:デフォルトの名無しさん
16/11/27 12:22:44.82 2v7FHJZn.net
>>800
正常系だけでいいのなら
@echo off
pushd %1
set n=0
for /f "delims=" %%i in ('dir /b /on *.jpg') do (
set /a n+=1
call set nn=00%%n%%
call set nn=%%nn:~-3%%
call ren "%%~i" %%nn%%-"%%~i"
)
popd

838:デフォルトの名無しさん
16/11/27 12:47:37.07 3PyehhaB.net
作成代行スレじゃないので自力でここまではできたけどここから先がわからない
というような努力の跡がほしいなぁ

839:デフォルトの名無しさん
16/11/27 15:20:44.02 V1m99hal.net
@echo off
pushd "%~dp1"
set n=1001
:ARGCHK
if "%~1"=="" pause &exit /b
ren "%~1" "%n:~-3%-%~nx1"
echo.
echo "%~nx1"
echo "%n:~-3%-%~nx1"
set /a n+=1
shift &goto :ARGCHK


選択ファイルを送るやバッチにD&D。001から999まで
Winの仕様によりD&Dの際は先頭ファイルを掴まないと順番が狂うので注意

840:デフォルトの名無しさん
16/12/04 12:46:34.73 RTx2BH8+.net
>>794>>799
ありがとうございます!返信遅くなりました
とくに799の方、具体的に話していただいて本当に助かりました。

841:デフォルトの名無しさん
16/12/04 16:10:49.30 J7/x1rKh.net
799

842:デフォルトの名無しさん
16/12/04 19:03:21.48 rwQpbrj5.net
799は素晴らしいな

843:デフォルトの名無しさん
16/12/10 00:17:50.34 CO5JTr10.net
pushd "%~dp1" || exit /b
if not exist "title.txt" exit /b
for /f "usebackq delims=" %%a in ("title.txt") do (
ren "%~1" "%%~a%~x1"
shift
)

forの中でshiftが働きません
どう書けば良いでしょうか?
選択ファイルをドラッグ&ドロップしてtitle.txtの順通りにリネームしたいです

844:801
16/12/10 14:16:28.41 CO5JTr10.net
自己解決しました
@echo off
pushd "%~dp1" || exit /b
if not exist "title.txt" exit /b
:LOOP
if "%~1"=="" pause &exit /b
for /f "usebackq %SKIP%%N% delims=" %%a in ("title.txt") do (
ren "%~1" "%%~a%~x1" || (echo "%~1" "%%~a%~x1"&pause &exit /b)
goto :NEXT
)
:NEXT
if not defined SKIP set SKIP=skip=
set /a N+=1
shift &goto :LOOP

845:デフォルトの名無しさん
16/12/10 15:09:17.17 ga5ibtHW.net
forループは実行前に式展開されてから実行されるので
式展開時に変数が内容の文字列に置き換わってしまい変数の意味を失う
@echo offを取って表示させたらわかるだろう
面倒なのでヒントだけ
for %%a ~ do (
set b=%%a
call echo %%a - "%%~1" - %%b%%
shift
)

846:デフォルトの名無しさん
16/12/10 16:20:43.39 CO5JTr10.net
>>809
ありがとうございます
callで遅延展開風にする場合%で囲むと思っていたので
call ren "%%~1%" "%%~a%%~x1%" と書いていて出来ませんでした
call ren "%%~1" "%%~a%%~x1" と書けば良かったのですね
%で囲むではなく「%を重ねる」と覚えるようにします

847:デフォルトの名無しさん
16/12/10 16:27:31.21 ga5ibtHW.net
式評価されるということは、
%%→%になるっていうことなんだよ
(これは%を表記する方法として覚えるけど)
set a=echo hoge
call %%a%%
call call %%%%a%%%%

848:デフォルトの名無しさん
16/12/11 10:51:05.79 HwfbXu/f.net
>>810
引数や変数を遅延展開するのは無理あるよ
あらかじめ環境変数をセットしたものが対象であり、どのコマンドにも適用できるわけじゃない
パーセントを前方に重ねるのはバッチ上の書式、一重囲みが環境変数、call command 二重囲みが遅延展開というように意味が異なる
よくわからなければエクスクラメーション記号にするか、カッコを使った複文を避けてサブルーチンに渡す、など別の方法をとる

849:デフォルトの名無しさん
16/12/11 15:29:30.80 wBKcLq5q.net
遅延展開というより
式評価が、実行時とcallの2回実施される
一回目の式評価ではまだ変数展開が行われずに残ったままにしたい
ってのが%%にする理由

850:デフォルトの名無しさん
16/12/11 15:39:49.38 wBKcLq5q.net
for /F %%i in ('command')
形式の'command'の部分、ここにも式評価が入ることが結構忘れられる

851:デフォルトの名無しさん
16/12/11 16:35:43.66 wBKcLq5q.net
補足
commandにパイプやリダイレクト記号を書くような場合は
^| や ^>とかのように'^'を付けないとエラーになるから忘れるということは無いだろうが
忘れる場合ってのは、>>523>>538のような場合のことで
元のように%一つにしておくと何が起き得るかは"ab%cd%ef"とかが入ってる場合を考えれば解かる

852:デフォルトの名無しさん
16/12/11 22:14:02.08 iHWHaBgd.net
\/:*?"<>|
テキストファイルに含まれるこれらのファイル名に使えない文字を全角文字に置換したいのですが
バッチで試してみたところ"*は無理でした
バッチから使えるcuiソフトなどで良いものや何か方法があれば教えて下さい

あ/あ "abc"
など括弧のように対応する"がある場合は、あ/あ “abc”
あ/あ a"
など対応するものが無ければ、あ/あ a”
みたいに出来れば理想です

853:デフォルトの名無しさん
16/12/11 22:19:57.19 iHWHaBgd.net
あ/あ “abc”
が何か分かり難くなってますが
左側が左ダブル引用符という下から上へコロン打ってるやつで
右側が右ダブル引用符で上から下へのコロンです

854:デフォルトの名無しさん
16/12/14 00:05:22.68 vS/jNHEE.net
netstat みたいに気軽で、もっと高速にアクセス中のホストが分かる方法ないでしょうか?
というのは、EdgeのURLを取得するのはかなり面倒なので
でも netstat の情報は1分以上遅延するので、できれば数秒で知りたい

855:デフォルトの名無しさん
16/12/14 00:51:13.45 /GnWlzD4.net
>>818
netstatそんなに遅れるか?
名前解決に時間が掛かってるんなら-nを付けて数値のみで表示させてみては?

856:デフォルトの名無しさん
16/12/14 01:19:09.19 vS/jNHEE.net
>>819
なるほど、-nなら一瞬でしたw
名前で反応したかったので、-fにしてました

857:デフォルトの名無しさん
16/12/14 01:31:44.57 /GnWlzD4.net
セッション数幾つぐらいなのか知らないけど
普通名前解決に秒単位なんてかからないよ
自分のプロバイダのところのDNSサーバー使ってるか?

858:デフォルトの名無しさん
16/12/14 01:54:27.20 vS/jNHEE.net
>>821
特に何もしてないので、プロバイダのDNSだと思います
普段は4つですが、ブラウザ開くと1ページでも何十個も出てきますね
よく見ると、一瞬で何十個もリストアップされる場面と、ひっかかる場面があって、相手先によるようですね

859:デフォルトの名無しさん
16/12/14 03:29:46.39 PdV20HuV.net
>>816-817
ファイル名には、半角英数字と、_ アンダーバーだけを使うこと

バグるアプリがあるから、それら以外の文字は使うな

860:デフォルトの名無しさん
16/12/14 04:28:14.68 /GnWlzD4.net
まあ今時ファイル名に日本語を使うなってのはちょっと無理っぽいだろ
良いものがあるかどうかは俺は知らんよ(人に探させずに自分で探すのがいいだろう)
PowerShellやWSHでやる分にはそれくらいは出来るだろうけど
ファイル名にはいろいろ落とし穴があるからなあ
長さ制限とか、con,com1等のデバイス名とか後につくピリオドや半角空白とか
com1. ..txt
とか作れない

861:デフォルトの名無しさん
16/12/14 17:45:01.83 vFnJFYnV.net
コマンドラインから「システムの環境変数」を参照するのってできる?

具体的には最近のJavaインストールすると、
システムの環境変数PATHの先頭に余計なもの追加しやがるので
それを削除するスクリプト書きたいんだよね。
設定は setx 使えばいいらしいんで、参照さえできれば削除できるかなーと。

862:デフォルトの名無しさん
16/12/14 17:55:14.06 puNU7ctc.net
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
個人的には reg export 使ってファイルでごにょるのが好み

863:デフォルトの名無しさん
16/12/14 21:30:56.66 PdV20HuV.net
PowerShell_ise では、大文字・小文字は同一として扱われる。
環境変数PATHを表示する
$Env:Path

設定は、
$str = ";C:\Program Files\Internet Explorer\"
set-item -path env:path -value "$Env:Path + $str" -WhatIf

-WhatIf を付けているので、実際には実行されないで、結果を見れる

864:デフォルトの名無しさん
16/12/14 23:47:39.26 vFnJFYnV.net
>>826
さんくす

865:デフォルトの名無しさん
16/12/15 22:24:24.35 Jry/Bq76.net
このスレってやっぱり仕事でCMD使ってる人がほとんどなのかな?

866:デフォルトの名無しさん
16/12/15 23:46:26.73 Jj9qQdSY.net
余裕で趣味です

867:デフォルトの名無しさん
16/12/16 00:25:58.77 EPzN1wXR.net
今もバッチで色々やってるけど
そろそろPowershell覚えた方がいいんかナー

868:デフォルトの名無しさん
16/12/16 03:59:28.83 rja7Rz9P.net
かなり前からそう思ってるけど.Net覚えるのが面倒臭くて先延ばしにしたままだわ

869:デフォルトの名無しさん
16/12/16 19:20:13.39 UvIhWraO.net
少し前から cmd/wsh+vbs から PowerShell に


870:移行したけどチョー楽しい ただ各所にトリッキーなトラップがあるのと比較演算子が -eq とか -lt とかなのがいまだに慣れない



871:デフォルトの名無しさん
16/12/17 20:01:48.32 rAxcOYFz.net
キッティングで使ってるけど
PowerShellはストアアプリの駆除がメインだな

872:デフォルトの名無しさん
16/12/18 08:18:40.79 qKtu6SDf.net
シェルスクリプトはリダイレクトに > | < 使ったアホのせいで
比較演算子がまともに使えなくなったのが痛い
PowerShellではその悪習を断ち切って欲しかった

873:デフォルトの名無しさん
16/12/18 11:49:41.76 djwC/Ohb.net
リダイレクトに<>を使ったのは大成功だったと思うがな。
PowerShellでヘンテコな構文を導入したところで、
マイクソシネって言われるだけじゃん。

悪臭というなら、パス区切り文字の\だろ。

874:デフォルトの名無しさん
16/12/18 15:58:05.60 oHmdKz4q.net
[]も問題起こすよね

875:デフォルトの名無しさん
16/12/18 16:00:06.55 oHmdKz4q.net
なんか四角形に見えるw
『 [ 』と『 ] 』ね。

876:デフォルトの名無しさん
16/12/19 12:20:52.68 H16UOEk6.net
豆腐屋って減ったよなあ

877:デフォルトの名無しさん
16/12/19 21:24:30.96 j5IwDTpi.net
峠を攻める豆腐屋

878:デフォルトの名無しさん
16/12/19 22:09:00.93 EFgj4hJx.net
というよりも小売りが…
八百屋なんて、そういうのがネタになっている商店街か、
近くに田畑があるようなところでしか見なくなったよ。
ほとんど全ての街ではスーパーでいいからな。

そう考えると、花屋は頑張っている。
未だにそれなりの数が残っているよな。
ま、スーパーの置き場所は限られているからか。
あとは客ひとりの利益率も悪くないんだろうなあ。

879:デフォルトの名無しさん
16/12/23 13:16:48.65 C13rqdFY.net
自身にマウントされてるドライブ/フォルダ名を指定してその対象がローカルドライブか否か判別できるコマンドってありますか?

880:デフォルトの名無しさん
16/12/23 13:19:26.61 C13rqdFY.net
あれ、なんか投稿が切れてる・・・

自身にマウントされてるドライブ/フォルダ名を指定してその対象がローカルドライブか否か判別できるコマンドってありますか?
『net use ドライブレター』でCIFS/WebDAVでマウントされた物かそうでないかは判断できるけど、
Dokanとかでマウントされた物も含めて、ネットワークドライブ全般を判別したいです。
(ただiSCSI/FCとかのブロックデバイスは仕方ないかなと思ってます)
よろしくお願いします。

881:デフォルトの名無しさん
16/12/23 20:54:24.61 QxIckOqH.net
>>843
俺は以下の要領でVBScriptと併用してる

スレリンク(tech板:587番)
>593 : デフォルトの名無しさん[sage] 投稿日:2014/06/16(月) 18:45:29.61 ID:R0cE173n [1/1回]
>>>592
> WScript.Echo CStr(CreateObject("Scripting.FileSystemObject").GetDrive(WScript.Arguments(0)).DriveType)
> ↑
>この1行をVBScriptファイルとして保存してから別途呼び出す方式にすれば、大雑把な判定なら可能。
>例えば、そのVBScriptファイルを"test.vbs"としてDドライブの種別を調べたい場合、
>コマンドプロンプト画面またはバッチファイルで以下のように実行してみる。
>cscript test.vbs d:

>すると1桁の数字が表示される。数字の意味は以下の通り。
> 1:リムーバブルドライブ(USBメモリ/SDカード/FDなど)
> 2:HDD
> 3:ネットワークドライブ
> 4:CD-ROM/CD-R/DVD-ROM/DVD-Rなど
> 5:RAMディスク

882:837
16/12/23 22:21:21.24 l7ZH


883:1QCK.net



884:デフォルトの名無しさん
16/12/23 23:59:30.85 QxIckOqH.net
>>845
あとは URLリンク(technet.microsoft.com) あたりで、他に使えそうな構文がないかどうか探すしかないのでは?
ちなみに以下の1行をVBScriptファイルとして保存してから別途呼び出す方式にすれば、任意のドライブにメディアが挿入されているかどうかを判定可能。

WScript.Echo CStr(CreateObject("Scripting.FileSystemObject").GetDrive(WScript.Arguments(0)).IsReady)

885:837
16/12/24 08:36:33.47 bGXjBeNc.net
>>846
ありがとうございます。
こちらのツールも勝手がよさそうですね。使わせていただきます。

886:デフォルトの名無しさん
16/12/24 12:05:37.82 mYH1sKhw.net
WSH等を使う…と言ってたらバッチの出番が無くなったりしてな

887:デフォルトの名無しさん
16/12/27 22:52:31.05 tD8K2H9A.net
errorleveになぜか9009が急に出はじめて
びっくりして検索したら、いろいろ出た

888:デフォルトの名無しさん
17/01/02 07:34:29.54 Jfm6LKzZ.net
msys等のprintf をプロンプトから forループ、変数 %s で実行すると困る、って夢を見たんだ

@for /d %s in ("%ProgramFiles%\M*") do @printf """%"s""" %"s"\n" "%s" "%s"

(´-`).。oO(ワケワカラン… もう一回寝たら何かひらめくかな…)

889:デフォルトの名無しさん
17/01/07 01:17:44.86 mJLtkeqF.net
URLリンク(pastebin.com)
こんな感じでmp4からpng形式で切り抜きたいのですが、出来ません
お願いします

890:デフォルトの名無しさん
17/01/07 01:42:13.02 QYFKEjsV.net
>>851
FILENAMEを%で囲ってないからでは

891:通りすがり
17/01/07 09:57:36.05 YuFs6plI.net
FILENAMEを、%で囲めば、いいのか。
φ(..)メモメモ。

892:デフォルトの名無しさん
17/01/08 00:48:03.49 jXHP++jg.net
>>852
ありがとうございます

FILENAME=hoge hage
としたい場合はどの様にしたらいいんですかね?
どこをダブルクォーテーションで囲めばいいのか分からなくて

893:デフォルトの名無しさん
17/01/08 01:06:14.31 xvjZF4HS.net
set文は引用符要らないでしょ、右辺丸々空白ごと代入される(引用符で括れば引用符ごと)
使用する状況によって "%var%" とかすれば

894:デフォルトの名無しさん
17/01/09 12:41:03.48 XllxQEeD.net
set文の最後の改行前や=の前後に空白入れてしまってバグになるなんて
初心者にはありがちか…な?

895:デフォルトの名無しさん
17/01/09 17:39:58.40 FdW16b/b.net
>>856
うん

896:デフォルトの名無しさん
17/01/09 17:46:32.39 Vl0ZF+DQ.net
>>856
こんな感じのが動かなくてなんでじゃーってなってた

@echo off
set number=1 && echo hoge
if "%number%"=="1" echo 成功
pause

897:デフォルトの名無しさん
17/01/21 18:44:36.79 tXmcovE0.net
スペース有り無しはホント罠
ファイルに出力リダイレクトする時も末尾に謎スペースが入ってるーとかよくある

vbsって別ファイルじゃなくてバッチ上に書いた文で実行できなかったっけ

898:デフォルトの名無しさん
17/01/21 18:57:14.10 0ZiC2kwV.net
jscriptなら

899:デフォルトの名無しさん
17/01/23 20:40:05.68 D7Cv/vEJ.net
バッチ処理で複数の作業を同時にするのはどうやるんでしょうか?
hoge 1-


900:100まで一気にやってしまうと負荷がひどいので、3つずつ走らせたいです FOR /F %%I IN (z,txt) do ( start /b hoge %%I ) これではすべて同時に実行されて困ってます



901:デフォルトの名無しさん
17/01/23 20:47:18.46 KnzUZKpX.net
>>861
取りあえず3つ起動して、それが終了するのを監視するとかかな
tasklist /fi "IMAGENAME eq hoge"
が無くなるまで次の起動を待つ

902:デフォルトの名無しさん
17/01/23 21:25:20.02 ltIH4vtA.net
同じ事で悩んだ記憶がある、こんなん如何でしょ?


FOR /F %%I IN (z,txt) do (
start /b hoge %%I
call :hogecounter
)
goto :EOF

:hogecounter
set /a num_hoge = 0
for /f "usebackq" %%i in (`tasklist /FI "IMAGENAME eq hoge.exe"`) do set /a num_hoge += 1
if %num_hoge% GEQ 5 (
echo hoge.exe 3つ以上実行中なので待機中... ---- %date% %time% ----
ping -n 2 127.0.0.1 1>nul 2>&1
goto hogecounter
)
exit/b

903:デフォルトの名無しさん
17/01/24 12:56:00.44 wPNJq+TP.net
>>862-863
回答ありがとうございます。とても勉強になりました
tasklistを使ってどうやって監視するのか考えていたんですが、こうやるんですね

904:デフォルトの名無しさん
17/01/24 20:29:53.92 /B8f83m4.net
startコマンドの第一引数はウィンドウタイトルと認識されるから、/b の効果は不明だね
start

905:デフォルトの名無しさん
17/01/24 20:30:49.14 /B8f83m4.net
start "" /b hoge %%I みたいに空文字でも入れておくといいかも

906:デフォルトの名無しさん
17/01/24 23:59:56.75 VxYK/9Zb.net
処理の終了を知らせるために
rundll32 user32.dll,MessageBeep
としてるんですが、鳴る音がランダムです

音楽プレイヤーを起動することなく特定の音を鳴らしたい場合はどう書けばいいですか?

907:デフォルトの名無しさん
17/01/25 08:04:52.52 JylBc2Qw.net
>>867
もし俺なら以下のようにする。

echo ^G^G^G

「^G」は実際にはコマンドプロンプト画面上で[Ctrl]と[G]を同時に押す事で入力できるアスキーコード7
(元々BEEP音を鳴らすための制御コード)を指す。だから「^G^G^G」なら、BEEP音が「ピッピッピッ」と3回鳴る。
パソコンによっては、ヘッドホンを繋ぐとBEEP音がヘッドホンからしか聴こえない機種もあるので注意。
(昔のパソコンは、ヘッドホンを繋いでいてもBEEP音は本体スピーカーから聴こえる機種のほうが普通だったけど)

908:デフォルトの名無しさん
17/01/26 02:22:00.01 xZjzKm01.net
プログラムは起動させても自動的に終了するのなら大丈夫では?
start "" /b /min sndrec32 /play /close "hoge.wav"

909:デフォルトの名無しさん
17/01/26 03:29:49.24 xZjzKm01.net
他スクリプトと併用した例
■start /minの代わりにWSHを併用(タスクバーにタブが出ない)
@if(0)==(0) @echo off
::ここから@endの間にBATスクリプトを記述し、最後はgoto :eofで終わらせる
echo 初回
cscript.exe //nologo //e:jscript "%~f0" "c:\media\foo.wav"
echo 2回目
cscript.exe //nologo //e:jscript "%~f0" "c:\media\bar.wav"
goto :EOF
@end
(new ActiveXObject("WScript.Shell")).Run('sndrec32 /play /close "'+WScript.Arguments(0)+'"',0,true);

■powershellを使ってBEEPで音階を演奏する
@echo off
:: beep(周波数,再生時間)
powershell -C "(262,294,330) | % {[Console]::beep($_,200)}"

910:デフォルトの名無しさん
17/01/26 03:42:07.64 xZjzKm01.net
訂正
powershell -C "(262,294,330) | %% {[Console]::beep($_,200)}"

911:デフォルトの名無しさん
17/01/27 00:


912:39:40.64 ID:igA7csKz.net



913:デフォルトの名無しさん
17/01/27 00:47:40.39 pF7zedh0.net
初心者です
batの書き方wikiのようなものはないんでしょうか
代表的なサンプルコードがたくさんあるサイトとか

みんな何を参考にコード書いてるの?

cmd help以外で

914:デフォルトの名無しさん
17/01/27 00:52:08.69 7NHk2TgN.net
バッチ 入門
バッチ 使い方
バッチ リファレンス

915:862
17/01/27 10:21:22.88 01h1aWf4.net
>>872
その方法をバッチファイルで実現するには、恐らく以下の方法が一番簡単だと思う。

(1) 黒いコマンドプロンプト画面で「echo echo 」の10文字(半角スペースを含む)をキーボードから打ち込む。
※この段階ではEnterキーをまだ押さない事!

(2) キーボード上の「Ctrl」キーと「G」を好きな回数だけ同時に押す。
※例えばバッチファイルの実行によりBEEP音を2回鳴らしたい場合は2回やる。

(3) そのまま「>>"」をキーボードから打ち込む。

(4) 編集したいバッチファイル名をエクスプローラの画面からコマンドプロンプト画面にドラッグ&ドロップする。
※例えば"C:\temp\sample1.bat"をエクスプローラの画面からドラッグ&ドロップすると、コマンドプロンプト画面に「C:\temp\sample1.bat」の文字列が転記される。

(5) そのまま「"」をキーボードから打ち込む。
※ファイル名を「"」(ダブルクォーテーション)で囲む理由は、ファイル名やフォルダ名に空白が含まれていても問題なく作業できるため。

(6) ここまでの一連の操作により、コマンドプロンプト画面では以下のように見えるはず。
「echo echo ^G^G>>"C:\temp\sample1.bat"」
それを目視確認できたらEnterキーを押す。これで作業完了。

(7) あとはメモ帳などのテキストエディタでバッチファイル編集を続行すれば良い。

916:デフォルトの名無しさん
17/01/27 16:42:05.37 o8MkOvQJ.net
>>873
おそらく、バッチの情報を1から100まで網羅してるページはネット上には無い。
ここの人たちは現役で使ってた人ばかりだから、習うより慣れろで成長してきた人

今から知りたければ、DOSが現役だった頃の20年~30年前の参考書を読むといいよ
図書館に行けばいくらでもある。古い本でも内容は全く問題ない。
おもにPC-9801やJ-3100関連だが、コマンドの使い方や自由度については昔も今も変わってない。

会社で98のDOSを使わざるを得ないサラリーマン向けの初心者用書籍が、わかりやすい。

dateコマンドはフォーマットが若干変わったし、formatコマンドとかハードウェア制御系は
オプションが全然違うけど、書き方は同じ。そういう差異だけはネットで調べるとよい。

917:デフォルトの名無しさん
17/01/27 16:59:28.96 ss8+Q0ea.net
DOSとNT系のコマンドはかなり違ってるから
今だとDOSのは全然参考にならないと思う
(重要なforとかsetとか)
BATの概要や各コマンドの文法はヘルプを読む
コマンドのオプション/?のヘルプでも良いけど、
Windowsのヘルプで概要から全体像を把握したほうがいい
後は、ウェブで探すことになるかな
だが、まずは自分のしたいこと、興味のある処理をどうやれば実現できるのか考えて、
googleで検索していき徐々に知識を増やすことになるだろう
読めば全部わかる教科書とかいうものは多分無いだろうしね

918:デフォルトの名無しさん
17/01/27 17:06:49.37 M+jB2zw0.net
ビーフ音ってモーみたいな音?

919:デフォルトの名無しさん
17/01/27 17:08:36.86 coDtb1o3.net
裏技みたいなやり方はどうやって習得していったのか気になる

920:デフォルトの名無しさん
17/01/27 17:31:38.


921:29 ID:01h1aWf4.net



922:デフォルトの名無しさん
17/01/27 17:46:39.61 ss8+Q0ea.net
>>880
ansi.sysの組み込みで使えるようになった奴ね
懐かしい(いろんなプロンプトを作って遊んでた)
まあエスケープシーケンスって聞くと印刷で使うものって感じだったけど

ところで、windows10 Threshold 2でコマンドプロンプトにANSI/VT100互換表示ができるような記事を読んだ記憶があるんだが
実際のところはどうなのかな

923:デフォルトの名無しさん
17/01/27 20:53:22.87 xhE2/Vp0.net
>>879
言えてる、個人的にはここで初めて知った call の使い方
call hoge %%fuga%%
みたいなの

あとこれもここで覚えた
set /p <NUL=
と コントロールコードの 0x08 [BS] を組み合わせての進捗表示

924:デフォルトの名無しさん
17/01/27 20:57:37.23 ss8+Q0ea.net
DOSだとcallも外部BATファイルしか呼べなかったんだよなあ
式評価はもとより内部ラベルも呼び出せない
@echoもこれしかコマンドに@は付けられなかった

925:デフォルトの名無しさん
17/01/27 21:16:38.29 ss8+Q0ea.net
こういうのもここで覚えたよ
for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I
echo %BEL%

926:デフォルトの名無しさん
17/01/27 21:20:50.03 01h1aWf4.net
>>881
URLリンク(www.excite.co.jp) の件については俺も知らん。
何しろ現在まだWin7ユーザーで、Win10は一度も使った事がないからな。

>>883
そういやechoコマンドに@を付けられるようになったのは、MS-DOSのVer.5.0からだったっけ?

927:デフォルトの名無しさん
17/01/27 21:24:19.98 coDtb1o3.net
>>884
なんじゃこりゃ
凄い

928:デフォルトの名無しさん
17/01/27 21:36:09.67 xhE2/Vp0.net
>>884
すごい、どーいう仕掛け???


コマンドプロンプトのプロパティに「コンソールの新機能の詳細」↓があって
URLリンク(technet.microsoft.com)
読んでコンソールウィンドウの透明度の変更が
CTRL+SHIFT+Plus (+) or CTRL+SHIFT+mouse scroll up
CTRL+SHIFT+Minus (-) or CTRL+SHIFT+mouse scroll down
であることを知ったのはまだいい?として
CTRL+F
で検索ができるのを初めて知ったよ……

929:デフォルトの名無しさん
17/01/27 21:49:56.71 01h1aWf4.net
>>884
おぉ、その方法で環境変数%BEL%にアスキーコード7が1つ格納されるとはな。
だから>>868と同じ仕組みの事が実現できるわけだ。
>>875の方法やVBScriptのChr関数をうまく使えない人には、面倒でも利用価値があるかもな。

930:861
17/01/29 14:25:18.42 ddwWtq0w.net
>>868
音は鳴りませんでした
>>869
できました
>>870-871
できませんでした

一瞬起動するのが気持ち悪いですが>>869で妥協しますありがとうございました

931:デフォルトの名無しさん
17/02/02 16:41:44.39 2a/0H2Op.net
教えて欲しいのですが、バッチファイルでhostsファイルを上書きコピーしたり、一部を糀谷したりすることは可能でしょうか?
単純にコピーコマンドではうまく行きません。

932:デフォルトの名無しさん
17/02/02 23:15:37.


933:79 ID:LhAHr7Zi.net



934:デフォルトの名無しさん
17/02/02 23:27:36.20 rUH8Ic6o.net
俺はXPなので最近のは知らないけど
ユーザー権限の問題なのでは?
問題のファイルはWINDOWS\system32\drivers\etcの下にある
ここは一般ユーザー(Power Users,Users)資格では変更・書き込み不可になってるはず

935:デフォルトの名無しさん
17/02/03 11:18:52.82 qUN7oehH.net
>>880
それはNTだからじゃなくて、cmdだからだよ。

936:デフォルトの名無しさん
17/02/03 11:32:41.65 PzggaHL+.net
>>893
そりゃそうだけど、BATファイルからしてみれば関係なくね?

937:デフォルトの名無しさん
17/02/03 23:21:27.20 qUN7oehH.net
>>894
command.com起動すれば従来通り動いたはずだよ。
64bitだと動かないけど。

938:デフォルトの名無しさん
17/02/06 22:43:42.84 Dm4Nipmb.net
今更だが、WindowsNT系のイベントログを自動的にテキストファイルへ出力
(エクスポート)する方法としては、PowerShellインストール済の状態で
以下の3行をバッチファイル内で実行するのが俺には一番妥協できそうだ。

powershell.exe -command ("Get-EventLog Application | Export-CSV '%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")
powershell.exe -command ("Get-EventLog Security | Export-CSV '%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")
powershell.exe -command ("Get-EventLog System | Export-CSV '%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_psh.csv' -Encoding unicode")

以下の3行をバッチファイル内で実行する手もあるが、
時間がかかりすぎる上に英語でしか出力されないのが難点。

wmic ntevent where "(logfile='application')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_wmic.csv"
wmic ntevent where "(logfile='security')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_wmic.csv"
wmic ntevent where "(logfile='system')" list /format:CSV > "%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_wmic.csv"

939:デフォルトの名無しさん
17/02/07 23:49:52.03 OwFQ4nmk.net
command.comで16bitアプリが動いたらいいのに

940:デフォルトの名無しさん
17/02/08 01:50:38.96 QE6/hL5U.net
almond.com

command not found.

941:デフォルトの名無しさん
17/02/08 07:20:17.84 h1zz+gVt.net
>>896
wevtutil じゃダメなの?
URLリンク(technet.microsoft.com)(v=ws.10).aspx

942:890
17/02/08 16:12:37.67 45vPMFEy.net
>>899
今使ってるWin7 Pro x64マシンは4年以上前に買ったものだが、そのコマンドは初めて知った。
実際やってみると従来より処理結果が見やすい上に速いな。ありがとよ。

wevtutil qe Application /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_app(%DATE:/=%-%TIME::=%時点)_weu.txt"
wevtutil qe Security /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_sec(%DATE:/=%-%TIME::=%時点)_weu.txt"
wevtutil qe System /f:text /uni:true > "%~dpn0_%COMPUTERNAME%_sys(%DATE:/=%-%TIME::=%時点)_weu.txt"

943:デフォルトの名無しさん
17/02/15 04:47:51.68 aywwqEZo.net
%%i(ファイル名)が半角英数、"_" だけで構成されていたらという判定はどうやればいいんでしょうか

944:デフォルトの名無しさん
17/02/15 04:56:51.86 wUshnQbT.net
findstr /?

945:デフォルトの名無しさん
17/02/15 09:59:50.17 7bSa3oIc.net
>>884ってなんで?これと関係ある?

URLリンク(ash.jp)

> UnicodeのUCS-2の文字コード表は、UTF-16と同じです。
> UTF-16 3007 〇

946:デフォルトの名無しさん
17/02/15 12:14:52.43 Q79MmBL5.net
>>903
もう一つ例を出せばはっきりするかな
for /f "delims=N" %%I in ('cmd /u /c echo 三') do set TAB=%%I

947:デフォルトの名無しさん
17/02/15 14:00:41.73 fyxpm6Tl.net
>>903
その通り。半角文字「0」のアスキーコードを16進数で表すと30で、
BEEP音を出す制御コードのアスキーコードは07だからね。

948:デフォルトの名無しさん
17/02/18 09:27:34.31 aH8To


949:s2O.net



950:デフォルトの名無しさん
17/02/18 13:52:15.93 8EFqk4IF.net
>>906
三だと、何か、あるんですか?
アホなもので、教えてください。

951:デフォルトの名無しさん
17/02/18 13:58:40.90 np+iCDRO.net
>>907
この(過去)スレで初登場したオリジナルってことかな?
コード表を見ればわかるけど使える文字は結構限られてて、この「三」は0x30以外でTABとして使える珍しい部類かな

952:デフォルトの名無しさん
17/02/18 16:19:49.41 aH8Tos2O.net
>>907

>>903のURLだと「三」は"4E09"になってるだろ?
んで↓のASCIIコード表だと「N」は"4E"だから、「N」で「三」を区切ると"09"つまり「HT(水平タブ)」が残るってこと。

URLリンク(www9.plala.or.jp)

953:901
17/02/19 13:32:35.73 OLDLML6K.net
>>908
>>909
ありがとうございます。
アホの私に、丁寧な説明、ありがとうございます。

954:デフォルトの名無しさん
17/02/20 12:38:49.83 Yd+dsT91.net
社内のシステム管理者してます。
WSHかpower shellを勉強したいのですが、VBA多少わかるのでWSHがよいかと思ってたのですが、これから勉強するならpower shellのほうが良いのでしょうか?

955:デフォルトの名無しさん
17/02/20 12:46:25.36 DNbD6mo9.net
社によりけりだから会社に聞け

956:デフォルトの名無しさん
17/02/20 12:59:56.69 o4bNBCuM.net
自分はPowerShell好きなので聞かれたら答PSって言っちゃうけど
実際は組合せが必要になる場面もあるだろうしbatも含めて触れやすい所からやって行こう

957:デフォルトの名無しさん
17/02/20 13:21:52.61 aGrUDuyU.net
今後htmlやJavaに関わる可能性があるなら、WSH(JScript)が良いかも

958:デフォルトの名無しさん
17/02/20 14:02:23.91 H64DODQY.net
一通り、全部実用できるように、するしか無いのでは.

得意なものは、一つあるけれども、他のも使えますと言うのが、よろしいかと.

959:デフォルトの名無しさん
17/02/20 14:14:39.50 GNpZgzhH.net
鬼の全パターン回答

960:デフォルトの名無しさん
17/02/20 14:19:59.36 aGrUDuyU.net
最終的にどうするかじゃないだろ
学習する優先順位、つまりまず最初に何から勉強していくのか
が問われている

961:鬼?
17/02/20 15:40:20.74 H64DODQY.net
鬼?
でも、実務上は一通り、できたほうが、よろしいかと。

962:デフォルトの名無しさん
17/02/20 18:46:18.21 ybI95Kss.net
言語の選択もさることながら
レジストリ操作が出来ると良いかと
キーは同じだけど枝が違うヤツを
変えることもあるので

963:デフォルトの名無しさん
17/02/20 20:05:53.47 7yJYF54k.net
>>911
今更 WSH はないだろ
PowerShell は癖があるけど慣れれば全然楽だよ

964:デフォルトの名無しさん
17/02/20 20:22:08.30 ynZG7eTn.net
まだまだ使える! WSHプログラミング ~ VBScriptのテストツールの紹介 (1/2):CodeZine(コードジン)
URLリンク(codezine.jp)

965:デフォルトの名無しさん
17/02/20 21:44:53.54 D++FG3XO.net
WSHはファイルに保存しないと実行できないのが致命的。

966:デフォルトの名無しさん
17/02/21 12:35:55.81 4H0MJuHo.net
.Netがハードル
C#使うとか覚えるとかで他でも使うなら良いがPSの為だけに.Net覚えるのはコスパ悪くない?

967:デフォルトの名無しさん
17/02/21 12:


968:44:43.11 ID:jPlNYKt3.net



969:デフォルトの名無しさん
17/02/21 12:45:57.01 BY3mJNCy.net
WSHはBATよりはましだがもう過去のものだし
PSはMSが広めようとするも全然使われてないし
これやったら絶対いいといった決め手はない
結局はどれに興味がわくかで決めるしかないのが現状

970:デフォルトの名無しさん
17/02/21 13:05:43.90 jPlNYKt3.net
>>925
結局、一通りマスターするしか、ないのよね。
決定的なもの、ひとつマスターすれば、okとは行かないのが現状。

971:デフォルトの名無しさん
17/02/21 14:15:03.94 y0kzTLQN.net
>>923
テキスト処理とか WSH でやる程度のことは .NET に頼らなくてもできるよ
お陰で -split 演算子と String.Split( ) みたいに似て非なるものが色々できてしまうわけだが...

972:デフォルトの名無しさん
17/02/22 20:10:23.63 mAYQQSaw.net
Windows7において二つのバッチファイルを同じフォルダ内に作る

・hoge.bat

(以下中身)
echo これはhoge.batです
pause

・hoge(A).bat

(以下中身)
echo これはhoge(A).batです
pause

保存した後おのおののバッチファイルを右クリックして「開く」を実行する。
当たり前だがおのおののecho文の内容が表示される。

ここまではいい。

次にhoge(A).batを右クリックして「管理者として実行」をクリックする。
すると、

「これはhoge.batです」

と表示されるではないか。
末恐ろしい・・・

973:デフォルトの名無しさん
17/02/22 21:19:44.12 L0zJ8/8i.net
ほえ~、ファイル名に ( が入っていると「管理者として実行」にしくる場合があるのね

hoge.bat を
echo,all "%*"
echo,0 "%~f0"
echo,1 "%~f1"
echo,2 "%~f2"
echo これはhoge.batです
pause

hoge(A).bat のファイル名を hoge(A)(S(D).bat

にすると最初の ( で分割されてるっぽいのが見て取れる

hoge(A).bat の ( の前に1個以上半角or全角スペースを入れてやると、
そのファイル名なら問題ないみたい

なんで???

974:デフォルトの名無しさん
17/02/22 23:00:05.19 mAYQQSaw.net
バグかね?

975:デフォルトの名無しさん
17/02/22 23:56:41.49 0ijMuyId.net
"("を含むパス上にあるbatファイルを、「管理者として実行」で正常実行できない
URLリンク(social.msdn.microsoft.com)

976:デフォルトの名無しさん
17/02/23 00:16:59.94 OmWT2WV6.net
なるほど、batfile とついでに cmdfile も書き換えて....っと
レジストリいじると ( で分断されないや、勉強になります

977:デフォルトの名無しさん
17/02/23 03:57:43.76 5MDB4WX9.net
WMIC PROCESS GET /FORMAT:LIST | FINDSTR /R "CommandLine= Caption=" > "%~dpn0_%COMPUTERNAME%_プロセス一覧(%DATE:/=%-%TIME::=%時点)_wmic-findstr.log"

978:デフォルトの名無しさん
17/02/23 12:05:36.44 OfWDpqOl.net
条件によって括る括らないとかせずに全部括るようにすれば良かったのにな
バッチに限らずWinでのこの引数関係の不具合やハマりは沢山あるが
そうしていればほぼ全て解決してただろうに

979:騙し髪
17/02/24 02:03:32.35 bJGVi00E.net
これもバクじゃないから困る
systeminfo | findstr /i /r /c:"^OS バージョン"

980:デフォルトの名無しさん
17/02/24 10:39:00.57 y7jxU5gN.net
>>935
↓これで妥協するしかないのかな?
systeminfo | findstr /i /r "OS" | findstr /i /c:"バージョン"

981:デフォルトの名無しさん
17/02/24 11:34:02.28 YZGHPd2K.net
>>935
何でいきがって /r なんて指定してるんだ?

982:デフォルトの名無しさん
17/02/24 11:57:48.17 y7jxU5gN.net
>>937



983:findstr /? これの実行結果を読めば分かる。 要はsyteminfoコマンド実行結果の内、「OS バージョン」という文字列が 行頭にある行だけを正規表現で抽出したいというのが>>935の意図。 実際は以下のように記述するしかない感じだが… systeminfo | findstr /i /r "^OS" | findstr /i /c:"バージョン" ちなみに>>936は少し記述ミスがあるので無視してほしい。 また、実行結果の表記がverコマンドの場合と少し異なる点にも注目。



984:デフォルトの名無しさん
17/02/24 12:15:58.03 FJeAwGiZ.net
>>936
systeminfo | findstr /b /c:"OS バージョン"

985:デフォルトの名無しさん
17/02/24 13:24:30.97 IrOG+H9r.net
もっと困りそうなのが、引数(ファイル名)で使われることが多そうな全角スペースの取扱いだよ。

cmd と エクスプローラーで、半角スペースと同じように扱ったりそうじゃなかったりする。
エクスプローラーからのドロップやタブ補完なんかを行うと、半角スペースとは異なる扱いになるのに、
コマンド実行の際には半角スペースと同様の扱いをして、そのままではパスが通らないことがある。

たとえば、C:\test dir\test.txt (batやexeでもいい) があるとして、カレント・ディレクトリが C:\ の場合、
cd test dir はクォートなしで通るし、
cat test dir\test.txt も普通に実行できるけど、
dir test dir\test.txt は通らない(クォーティングが必要)。

全部クォーティングすれば問題にならないと思われるにも関わらず、
C:\test dir\test space.txt というファイルパス(全角スペースのみならず半角スペースあり)の場合、
エクスプローラーからコマンド・プロンプトへドロップした際、
先の C:\test dir\test.txt はクォーティングされないが、
C:\test dir\test space.txt だと、きちんとクォーティングされる。

色んなパターンが合って、上手く説明できないけど、
補完とかの挙動もおかしかったりするので、ちょっといじってみるとわかってもらえると思う。

986:デフォルトの名無しさん
17/02/24 18:08:43.97 S5p8nT+v.net
>>935
負けた気がするけど
systeminfo | findstr /i /r /c:"^OS バ..ジョン"

987:デフォルトの名無しさん
17/02/24 18:53:46.21 J9Egd7AE.net
パス区切りをバックスラッシュにしたやつ、
円記号とバックスラッシュを同じにしたやつ、
全角スペースをデリミタにしたやつ、
は土下座行脚、いや、焼き土下座行脚すべき

988:デフォルトの名無しさん
17/02/24 21:47:48.07 y7jxU5gN.net
>>939,941
そちらはどれも正常に機能するんだな。

989:デフォルトの名無しさん
17/02/24 22:06:52.03 cAJGTXKH.net
正規表現で日本語使うのに一々文字コードを確認しなきゃならないってのは大変
MSにはもっとマルチバイト言語圏に気を配って欲しかった

990:デフォルトの名無しさん
17/02/25 04:26:31.35 xGmZcvF/.net
systeminfo | findstr /i /r /c:"^OS バ"

991:デフォルトの名無しさん
17/02/25 09:03:13.40 5GrbAtXq.net
パスに含まれるスペースも問題を起こすけど、"["と"]"もこれまた厄介だ。

992:デフォルトの名無しさん
17/02/27 23:58:11.99 WTG5WMst.net
めっちゃスレチだけど、SSDってちょっと前まで寿命が短いって言われてたけど
いつの間にかHDDより寿命が長くなってるんだな。びびったわw

993:デフォルトの名無しさん
17/03/01 05:48:52.22 AsJGDaOR.net
新人がバッチファイルに興味を持ったらしく、遅延展開のことを聞いてきたので
まずお約束の「SETLOCAL ENABLEDELAYEDEXPANSION」の記述を教えたら
それだけでウンザリされたぞ。
「%」ではなく「!」で囲まなきゃならないことを教えたらさらにウンザリされた。
やっぱりとっつきにくいよなあ

994:デフォルトの名無しさん
17/03/01 12:07:40.17 e1g5jWjK.net
他の言語はある程度習得できたけど
バッチは何度やっても覚えられない

995:デフォルトの名無しさん
17/03/01 12:53:16.16 SJrJxNnQ.net
>>948
> まずお約束の「SETLOCAL ENABLEDELAYEDEXPANSION」の記述を教えたら
> それだけでウンザリされたぞ。
俺ならその時点でそんなやる気の


996:ない新人は放置する



997:デフォルトの名無しさん
17/03/01 13:11:32.18 ZEta6nTz.net
確かに、その段階で、うんざりするような人に、
教えたくは無いな。

998:デフォルトの名無しさん
17/03/01 14:45:21.65 XTrmDaeR.net
ただただ長ったらしいんだよ
SetLocal EnableDelayedExpansion
ってすればかなり反応も違ったのかも

999:デフォルトの名無しさん
17/03/01 15:21:29.24 XTrmDaeR.net
それと意識の違いがあるかもな
C#とかだったらどんなに複雑でも必死で覚えようとするだろうが
BATだとまあそこそこ使えりゃいいんだよって感じで片手間の労力しか掛けたくないんだろう
実際使う機会なんて、ifで条件切り分けて起動アプリや引数を変える程度だろう
それ以上になるなら、簡易なツールでも作ったほうがいいとなる
あとは、何でも質問してくる新人なんて付き合ってられんだろう
学校の延長じゃないんだし、BATに限らず、まずはマニュアルやヘルプやwebで調べて自分で学習することを覚えさせるべき

1000:デフォルトの名無しさん
17/03/01 15:25:56.41 TOh8r3Y7.net
俺としては遅延展開は遅延展開が必要になった状況になって初めて教えた方がいいと思うけど

わけがわからんけどとりあえず書いとくおまじないってのプログラム関係の解説に多いけど
そういうの本当にうんざりする。
おまじないなんてアホな事書くぐらいならきちんと説明しとけと

1001:デフォルトの名無しさん
17/03/01 19:10:44.78 SJrJxNnQ.net
>>953
こういう知ったかにもげんなりする
> 実際使う機会なんて、ifで条件切り分けて起動アプリや引数を変える程度だろう
そんなものに遅延展開が必要になることはほぼない

1002:デフォルトの名無しさん
17/03/01 19:15:14.05 XTrmDaeR.net
>>955
>>952も言ってるように、遅延展開が必要になった場面で
それでも使わなければならないのなら教えればいい
単に勉強として教えても身にはつかない

1003:デフォルトの名無しさん
17/03/01 19:16:27.03 XTrmDaeR.net
>>952>>954に訂正

1004:デフォルトの名無しさん
17/03/01 19:22:01.47 SJrJxNnQ.net
>>956-957
何で俺にアンカーしてるんだ?
>>954 はまあ正しいと思うし本当に必要になったかどうかは >>948 の所の新人に聞かなきゃわからんし

1005:デフォルトの名無しさん
17/03/01 20:34:12.60 novnWMTs.net
長い上に補完効かないからゲンナリしたんだろうと邪推、テンプレート的な何かを
用意してあげればハードル下がるんじゃないですかね?
補完が効くなら大した事じゃないだろうし

内容はたったこれだけだけど、右クリック→新規作成 にバッチファイルの雛形を追加してから随分楽になった>俺
@setlocal
@echo off
prompt $g
title %~n0
cd /d %~dp0

for /f "usebackq delims=" %%i in (``) do (
)

color 07
timeout 6
goto :EOF

:adminchk
whoami /GROUPS|find "High" 1>nul 2>&1
if errorlevel 1 (
color 4e
echo,このバッチファイルは 管理者権限 で実行してください.
echo,何かキーを押下するとバッチファイルを終了します.
pause 1>nul
color 07
exit
)
exit/b

今回なら 1行目に enabledelayedexpansion を↓追加したやつで

1006:デフォルトの名無しさん
17/03/01 20:35:34.84 novnWMTs.net
うを、「 ↓ 」消し忘れた orz

1007:デフォルトの名無しさん
17/03/01 21:10:31.50 9330vN7g.net
@echo offを使うコードは嫌い

ちゃんと動けば問題ないが、大抵どこかがおかしいのに自信満々で隠してる

1008:デフォルトの名無しさん
17/03/01 21:57:06.50 novnWMTs.net
スタンスの違いですかね、そんな風に考えたこともなかった

1009:デフォルトの名無しさん
17/03/01 23:08:51.35 yR2oLnRj.net
使い道が限られてるし
めちゃくちゃ便利って思うバッチの恩�


1010:bがないと 覚えるキッカケにならないと思う あとはキッティングとかやらないと必要にならない



1011:デフォルトの名無しさん
17/03/01 23:22:58.59 kitmjsdZ.net
>>961
デバッグした後であれば、表示されて煩わしい部分(コメントとか)隠すぶんにはいいんでないの?
何のコマンドを実行しているかは、その説明をechoしたり、echo on を直前に記述したっていいわけだし。

1012:デフォルトの名無しさん
17/03/02 03:25:05.16 BRCb1ETq.net
@echo on
pilder on
Mazinger Go
@echo off

1013:デフォルトの名無しさん
17/03/02 05:28:42.72 pdyDswRT.net
@echo off
rem title "name"
goto :main

comment
USING: this.bat "hoge" ["foo" ["bar"...]]
何のバッチかとか使い方とか引数や変数の説明
基本的にREMは使わない

:mein
echo 俺は全部こんな感じ

1014:デフォルトの名無しさん
17/03/02 11:37:11.71 T2bzQ343.net
シェルスクリプトはタイプ数減らすために逆にエスケープ周りのルールが複雑化して全然生産性上がらないんだよな
デバッグもしづらいし
その点でVBSは良かった
文法は糞だけど

1015:デフォルトの名無しさん
17/03/02 17:09:23.49 3Z7pahnd.net
>>966
「:mein」は、「main」?

1016:デフォルトの名無しさん
17/03/02 17:10:26.85 3Z7pahnd.net
間違った。
「:mein」は、「:main」?
だ。

1017:デフォルトの名無しさん
17/03/02 18:22:16.37 s+qRP6Bf.net
>>967
複雑?
お前さんの知能が足りんだけじゃね? w
.cmd のエスケープの方がトリッキーだろ、正式なドキュメントもないし

1018:デフォルトの名無しさん
17/03/03 05:02:41.69 WTPXL6BV.net
delimsにダブルクォーテーションを使用することは出来ないですか?

1019:デフォルトの名無しさん
17/03/03 12:31:28.29 1c3U0vHr.net
>>962
エスケープすることで可能(forのオプションは囲むことは必須ではないため)
URLリンク(stackoverflow.com)
URLリンク(otnx.jp)コマンド別/for/

1020:デフォルトの名無しさん
17/03/03 12:34:06.93 1c3U0vHr.net
>>971 の間違いだわ、失礼

1021:デフォルトの名無しさん
17/03/03 13:12:34.59 WTPXL6BV.net
>>972
囲まなくてもよかったんですね。
勉強になりましたありがとうございます。

1022:デフォルトの名無しさん
17/03/05 12:48:27.31 4ixcbh2y.net
コマンドプロンプト

1023:デフォルトの名無しさん
17/03/05 12:50:43.60 4ixcbh2y.net
間違えた、すみません。

1024:デフォルトの名無しさん
17/03/05 13:58:00.83 7VmbrbTL.net
半年ROMれ

1025:デフォルトの名無しさん
17/03/06 09:55:26.77 cTPfG0tg.net
cmd終了のお知らせ

次期大型アップデート、Windows 10 Creators Updateの実像 - PowerShellが標準に、Linux環境も強化したWindows 10 Creators Update:ITpro
URLリンク(itpro.nikkeibp.co.jp)

1026:デフォルトの名無しさん
17/03/06 19:59:20.47 ZhaNpIEG.net
まじかよ…まぁでもまだいける

1027:デフォルトの名無しさん
17/03/06 20:25:53.65 ajpZLJux.net
cmd環境はサポート維持が表明されてるから安心して良いよ
むしろ危ないのはWSHの方

1028:デフォルトの名無しさん
17/03/07 10:57:03.69 yt35hC5o.net
>>978
塩田さんの記事か。
少し、ひっかかるものがあるけど。

1029:デフォルトの名無しさん
17/03/07 11:34:23.30 NGhUJ85m.net
>>980
記事を読む限りはcmd環境も維持されるみたいね
なんとなく安心

1030:デフォルトの名無しさん
17/03/08 16:42:00.84 yjHW4J+N.net
test

1031:デフォルトの名無しさん
17/03/08 16:42:42.42 yjHW4J+N.net
test2

1032:デフォルトの名無しさん
17/03/08 16:43:19.20 yjHW4J+N.net
test3

1033:デフォルトの名無しさん
17/03/08 16:44:30.11 yjHW4J+N.net
test4

1034:デフォルトの名無しさん
17/03/08 16:44:57.54 yjHW4J+N.net
check.

1035:デフォルトの名無しさん
17/03/08 20:25:28.66 22c2SBHy.net
del の外にごみ箱送りの削除コマンドを追加して欲しい
できるソフトはあるが、内部コマンドで

1036:デフォルトの名無しさん
17/03/10 20:40:22.23 f4ZS1b20.net
はは

1037:デフォルトの名無しさん
17/03/10 22:27:00.13 yR7vM1Ks.net
>>989
ひろし、ごはんだよ

1038:デフォルトの名無しさん
17/03/11 05:16:21.18 fFh0REPG.net
落ちる

1039:デフォルトの名無しさん
17/03/11 11:23:33.97 0VclosvM.net
落ちるー。

ミハル

1040:デフォルトの名無しさん
17/03/11 13:48:33.39 2LSSeyH1.net
次スレ
【.cmd】 バッチファイルスクリプト %12 【.bat】
スレリンク(tech板)

あとヨロシク

1041:デフォルトの名無しさん
17/03/11 13:55:01.66 +iqzxRFD.net
落ちゆく、スレにも、幸いあれ。

1042:デフォルトの名無しさん
17/03/11 20:19:37.53 +iqzxRFD.net
今は、落ちゆくスレとても、dat内にて、花さかせん。

1043:デフォルトの名無しさん
17/03/11 20:55:16.00 a53QpxuN.net
うめ

1044:デフォルトの名無しさん
17/03/12 05:37:51.15 59Ox3raF.net
梅一輪 一輪ほどの あたたかさ
             服部嵐雪

1045:デフォルトの名無しさん
17/03/12 05:51:14.15 FQp4yzuc.net


1046:デフォルトの名無しさん
17/03/12 11:27:49.81 1iqHgo3m.net
shutdown /s /f /t 0 ←Windowsを即電源断
shutdown /r /f /t 0 ←Windowsを即再起動(※現在セーフモードならセーフモード,通常モードなら通常モードで再起動)

1047:デフォルトの名無しさん
17/03/12 11:35:19.11 1iqHgo3m.net
あと6レスで今スレともおさらばか…

1048:デフォルトの名無しさん
17/03/12 12:15:48.13 eYHcL9Aw.net
2年かかったな

1049:デフォルトの名無しさん
17/03/12 13:02:15.60 59Ox3raF.net
梅の花散らまく惜しみわが園の竹の林に鶯鳴くも
                    少監阿氏奥島

1050:デフォルトの名無しさん
17/03/12 18:55:33.66 t+BguLGS.net
鶯谷の鶯嬢の鳴く声が聞こえてきそうだw

1051:デフォルトの名無しさん
17/03/12 20:22:26.13 1iqHgo3m.net
さぁ、このスレをシャットダウンしようじゃないか

1052:デフォルトの名無しさん
17/03/12 20:24:39.74 1iqHgo3m.net
>>993
次スレ乙

1053:デフォルトの名無しさん
17/03/12 20:54:33.04 1iqHgo3m.net
1000!

1054:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch