16/10/15 23:20:33.46 DDtj3KwG.net
バッチ初心者です。
Windowsのタスクで指定時間した時間になったら、バッチファイルで指定した常駐ソフトを再起動(終了→起動)させたいのですが、
taskkill /f /im app.exe
start /MIN "" "C:\app.exe"
のようにして最小化(/MIN)で起動するようにすると、そのソフトは何故かウインドウのスクロールバーが何故か消えてしまいます。
なので一旦アクティブで起動させてスクロールバーを表示させてから最小化したいのですが、方法がわかりません。
taskkill /f /im app.exe
start "" "C:\app.exe"
で起動させたあと、アクティブなapp.exeをコマンドで最小化する方法があったら教えてください。
よろしくお願いします。
714:デフォルトの名無しさん
16/10/16 06:33:42.07 e+WiyjQC.net
バッチにそんな機能はない
ahkなら
IfWinExist ahk_exe app.exe
WinMinimize
715:672
16/10/16 10:52:23.32 lNEScQ2P.net
抽象的な事を言って困らせてすみません
何をやりたいのかと言うと、youtubeから落とした動画がhoge -【DASH】.mp4とhoge - 【DASH】.m4aとなっているので、
これを
ffmpeg -i hoge - 【DASH】.mp4 -vcodec copy -i hoge - 【DASH】.m4a -acodec copy hoge.mp4
とエンコードして、
hoge【DASH】.mp4をforで検索して、その拡張子を取ったものを入力として使い、出力ファイル名として、hoge.mp4としたかったのです
716:デフォルトの名無しさん
16/10/16 17:03:52.47 z1QBGf3F.net
>>660
set /p で改行を入れない文字列を出力して
コントロールコードのBSで消す
@echo off
set bs=[BS]
set delline=%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%
for /L %%i in (1,1,10) do (
set /p x=%delline%%%i/10 <nul
timeout /t 1 >nul
)
717:デフォルトの名無しさん
16/10/16 19:44:42.76 l/p5e+57.net
>>685
set "fname=* - 【DASH】.mp4" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call :y "%%c:~0,%b%%%" "%%c%%"
goto :eof
:y
ffmpeg -i "%~n2.mp4" -vcodec copy -i "%~n2.m4a" -acodec copy "%~1.mp4"
718:デフォルトの名無しさん
16/10/16 21:03:50.48 cWFHk7WJ.net
>>686
コントロールコードを挿入できない人用
set bs=[BS]
↓
for /f "delims=0" %%I in ('cmd /u /c echo 〈') do set bs=%%I
719:その1
16/10/18 10:49:49.38 492hutXa.net
サーバサービスの起動条件がスタートアップ状態が自動でありながら
開始になっていないものをバッチで出力したい
とりあえずSCコマンドを使ってこんなことすると
sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt
下記のような起動していないサービスの名前がテキストに吐かれる
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
SERVICE_NAME: aspnet_state
SERVICE_NAME: AudioEndpointBuilder
SERVICE_NAME: AudioSrv
SERVICE_NAME: AxInstSV
SERVICE_NAME: BDESVC
SERVICE_NAME: Browser
(以下 略)
720:その2
16/10/18 10:50:03.97 492hutXa.net
そしてサービスのスタートアップ状態を調べるには
sc qc [サービス名]で表示される
sc \\HOGE qc AeLookupSvc |findstr "SERVICE_NAME START_TYPE"
この2つを組合せればフルオートで起動条件がスタートアップ状態が自動でありながら
開始になっていないものを出せるはずなんだが
「SERVICE_NAME:」←これが邪魔なんだ
教えてエロい人
これが消せたら下記でフルオートできるはず
@for /F %%=a in ('hoge.txt') do (
sc \\HOGE qc %%a
)
721:デフォルトの名無しさん
16/10/18 12:27:03.23 6Un6ctsT.net
for /f "tokens=1*" %%A in (hoge.txt) do echo %%B
722:デフォルトの名無しさん
16/10/18 12:44:29.69 oqQNu1fO.net
for /f
723:デフォルトの名無しさん
16/10/18 12:46:48.12 oqQNu1fO.net
for /f "usebackq tokens=2*" %%a in ("hoge.txt") do sc \\HOGE qc %%a
724:デフォルトの名無しさん
16/10/18 12:59:57.92 oqQNu1fO.net
"tokens=1*" %%b が正しい
725:デフォルトの名無しさん
16/10/18 13:04:01.66 492hutXa.net
面目ない、誤解させてしまったかも
オイラが知りたいのは
sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt
で出力される下記を
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
(以下 略)
先頭の文字列「SERVICE_NAME:」を外して出力したいというのが主旨です
AeLookupSvc
ALG
AppIDSvc
AppleChargerSrv
AppMgmt
(以下 略)
726:デフォルトの名無しさん
16/10/18 13:39:39.76 oqQNu1fO.net
for /f "tokens=1*" %%a in ('sc \\HOGE query state^=inactive ^| find "SERVICE_NAME"') do echo %%b >>hoge.txt
727:デフォルトの名無しさん
16/10/18 13:41:17.91 l1RYXy70.net
サービス扱うならPowerShellの方が楽でいいよ。
バッチから呼ぶならこんな感じ。
powershell -command
728:デフォルトの名無しさん
16/10/18 13:44:58.91 l1RYXy70.net
ダブルクオーテーション使うとそこで切れるんだけど書き込めてる人との違いってなんなんだろう
729:デフォルトの名無しさん
16/10/18 13:49:59.99 l1RYXy70.net
powershell -command ”Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}”
730:デフォルトの名無しさん
16/10/18 13:51:45.76 flBcMs6G.net
てすと
powershell -command "Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}"
731:デフォルトの名無しさん
16/10/18 13:52:36.16 UJ1l7XRj.net
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc \\HOGE query state^= inactive') do (
if "%%i"=="SERVICE_NAME" set name=%%j
echo;!name:~1!>hoge.txt
)
732:デフォルトの名無しさん
16/10/18 17:21:44.41 IWtXyw3/.net
ありがとうございます
早速試してみたのですが・・・
まずパワーシェルの方は「$_.StartType -eq 'Automatic'」これが効かないようです
(「$_.Status -eq 'Stopped'」こちらは効いてます)
バッチの方は1件目の「WwanSvc」だけで終ってしまうようです
733:デフォルトの名無しさん
16/10/18 17:24:37.38 XKgIhtEU.net
バッチファイルってWindowsタブレットで使える?
734:デフォルトの名無しさん
16/10/18 17:25:51.36 IWtXyw3/.net
大事な事を忘れてました
CL:Windows7プロ SP1(32bit)6.1.7601
SV:WindowsSV 2008R2 SP1(64bit)
735:デフォルトの名無しさん
16/10/18 17:59:25.19 oqQNu1fO.net
>「WwanSvc」だけで終ってしまう
>hoge.txtと上書きしてるんじゃ?>>hoge.txtと追記になってる?
736:デフォルトの名無しさん
16/10/18 20:40:09.09 UJ1l7XRj.net
アウチ!
ミスってた
>>705の通り。695追記になってない
×echo;!name:~1!>hoge.txt
〇echo;!name:~1!>>hoge.txt
737:デフォルトの名無しさん
16/10/18 22:14:57.94 N6eA0nOq.net
なるほど、追記になってなかったんですね
ただ、今度は同じサービス名が8回ずつ記録されるようになってしまいました
PCがおかしいのかなとwindows7とwindows8.1、そして懐かしのWindows2000で試しても
同じように8回ずつ記録されてしまうようです
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
ALG
ALG
ALG
ALG
ALG
ALG
ALG
ALG
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
738:デフォルトの名無しさん
16/10/18 22:41:11.76 UJ1l7XRj.net
type nul>hoge.txt
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc query state^= inactive') do (
if "%%i"=="SERVICE_NAME" (
set name=%%j
echo;!name:~1!>>hoge.txt
)
)
739:デフォルトの名無しさん
16/10/18 23:32:59.96 N6eA0nOq.net
>>708
成功しました
カッコの有無でなんでこんなに違うんだろうと不思議です
740:デフォルトの名無しさん
16/10/19
741:01:04:29.51 ID:OIm1eZAK.net
742:デフォルトの名無しさん
16/10/19 01:12:10.60 cKBmHXZY.net
そんな回りくどい事しなくても>>696で出来んじゃん
743:デフォルトの名無しさん
16/10/19 07:11:53.90 Jbfd2Dlj.net
>>696は一瞬コマンド窓が開くだけで動かなかったのです
744:デフォルトの名無しさん
16/10/19 07:56:59.52 OiCCOICb.net
>>698
2chのバグだろ
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうかな?
745:デフォルトの名無しさん
16/10/19 12:52:41.93 nMHfZfYD.net
" と文字参照を使って書き込めばいいのでは?
結果として " となるはず。
746:694
16/10/19 13:03:34.54 fhJbq8nW.net
JaneXenoでは特別な事しなくても書き込めた
747:デフォルトの名無しさん
16/10/20 18:11:41.71 fyY9mWCP.net
いっつもStyleで書いてるけど"で切れたことなど一度もないけどなあ
748:デフォルトの名無しさん
16/10/20 18:13:00.13 1rA0OcU3.net
>>687
遅くなってすいません
無事動きました
ありがとうございます
749:デフォルトの名無しさん
16/10/20 19:03:20.93 LBhOxlVJ.net
ダブルクオーテーションで切れるのこれっぽい。
スレリンク(unix板:777番)
自分も確かにこのケースだった。
750:デフォルトの名無しさん
16/11/02 06:03:13.96 CHmLMhVd.net
バッチファイル終了のお知らせ
“Microsoft Flow”が正式公開。さまざまなサービスを組み合わせた自動処理が可能 - 窓の杜
URLリンク(forest.watch.impress.co.jp)
751:デフォルトの名無しさん
16/11/02 06:40:56.27 w2Q1/JQP.net
アイデアは良いと思うが
>さまざまなアプリやサービスを組み合わせた自動処理を作成できるクラウドサービス“Microsoft Flow”を正式公開した。
>“Microsoft Flow”は“○○したら××する”といった一連の手続き(ワークフロー)をビジュアルでデザインし、自動実行できるサービス
>料金は1ユーザー1カ月あたり750回までの実行であれば無料。有償プランであれば実行回数が増える
回数制限で有料とかゴミすぎ
752:デフォルトの名無しさん
16/11/02 09:32:20.20 5fVzD+K5.net
こんなのは華や茶の流派と同じで新しいのがでても統合などされることは無いんだよね
753:デフォルトの名無しさん
16/11/02 23:59:36.62 WEv5cQ3m.net
>>719-720
ワークフローなんか各社から出てるじゃん。
754:デフォルトの名無しさん
16/11/04 00:14:32.57 0ODaAY82.net
そういうのってネットに繋いでない時にも必要なのにクラウドサービスって
しかも有料って
755:デフォルトの名無しさん
16/11/04 01:47:32.80 DvwqGnEZ.net
完全にスタンドアロンで放置して動かすときにクラウドなんて使ってられない
756:デフォルトの名無しさん
16/11/10 06:45:58.93 +oUm9x6Y.net
TidyTabs Window Manager: give every program a tabbed user interface
URLリンク(www.nurgo-software.com)
757:デフォルトの名無しさん
16/11/11 12:54:54.72 ZYU/THNy.net
batファイルをつくりたいのですが、どのようにすればいいでしょうか
全くの初心者なのでヒントが欲しいです
目標としては、
親フォル�
758:_Aの中に、子フォルダ[aaa]あああ、[aaa]いいい、[bbb]ううう があります ①([aaa]あああ)の[ ]内の文字(つまりaaa)を自動で取得し、その名前の新規フォルダを作成。(つまりaaaという名前の新規フォルダ) ②その後、親フォルダA内の[aaa]が入っているフォルダを検索する ③ ②で検索された複数フォルダを①で作成されたフォルダに入れる という流れを自動で行いたいです
759:デフォルトの名無しさん
16/11/11 14:42:02.48 OyxHpcMK.net
>>726
親フォルダを引数で渡すとしての一例
@echo off
pushd %1
for %%i in ([*]*) do (
for /f "tokens=1* delims=[]" %%j in ("%%~i") do >nul 2>&1 (md "%%~j"&move /y "%%~i" "%%~j")
)
popd
760:デフォルトの名無しさん
16/11/11 15:12:14.98 p31+l1cx.net
>>727
最初のforは/dつけないとだめでは
761:デフォルトの名無しさん
16/11/11 15:56:59.78 OyxHpcMK.net
おおー、フォルダだったのか
てっきりファイルだと思い込んでたよ
762:デフォルトの名無しさん
16/11/13 18:37:37.78 cer+jHW2.net
質問させていただきます
初めてバッチファイル、コマンドプロンプトを勉強して作っているのですが、HTMLページから特定のURLを抜き出してバッチファイルに代入したいのですが、その場合はWSH等で抜き出さないと出来ませんでしょうか
763:デフォルトの名無しさん
16/11/13 20:15:27.03 YAp+h9P5.net
>>730
HTMLページって具体的に何?
764:デフォルトの名無しさん
16/11/13 20:16:08.95 vGjlz1Ep.net
そんな大雑把過ぎる質問では最適解など分かるはずもなくレスつかないよ
PowerShell使ったら?
765:デフォルトの名無しさん
16/11/13 20:19:41.15 cer+jHW2.net
>>731
OPENREC.tvという動画サイトです
ここから動画ファイルのURLを吸い出して、エンコソフトをコマンドプロンプトに直接代入したいと思いまして・・・
>>732
すみません、この手の事は不慣れで・・・
PowerShellというものを初めて知りましたので、調べてみます
766:デフォルトの名無しさん
16/11/13 23:00:08.77 BL+CTUiW.net
手段の前にまず手順を具体的に整理して見るといい
要件についてまったく何も知らない他人に
全部手作業でやってもらうよう依頼するとしたらどう説明する?
767:デフォルトの名無しさん
16/11/14 01:02:54.70 csZc9y3a.net
松岡修造みたいにすると思う。
768:デフォルトの名無しさん
16/11/14 13:10:56.92 vvHHVAL2.net
バッチなんて所詮手作業を自動化するだけ
ここでは手作業を自動化するのを支援することは出来るが
手作業で出来ないor内容がわかってない人はどうしようもない
769:デフォルトの名無しさん
16/11/14 14:36:44.38 O1UQmJEN.net
>>733
1.PowerShellで.NETFramework使う
2.PythonやRubyなんかのllを使う
3.C#で簡単プログラミング
さあ選べ
770:デフォルトの名無しさん
16/11/14 15:07:34.34 WHs7zj8I.net
この場合は、バッチファイルにて
htmlを取得して、url文字列を抜き出して、エンコソフトにオプション渡し
ができるのか?、という問いなので、さあ答えは
771:デフォルトの名無しさん
16/11/14 15:27:55.44 bnBDmUvf.net
>>733
そこのサイトは知らんけど
>動画ファイルのURLを吸い出して
なんて書いてるけど今時動画ファイル直リンなんてあるの?手段すら分かってないんじゃない?
この手の技術に明るくないのであれば既存ソフトを用いてUWSCやAHKで自動化が現実的だと思う
rtmpdumpみたいなcuiソフトがそのサイトで使えるならバッチで出来ると思うが
772:デフォルトの名無しさん
16/11/14 15:29:20.63 9SfC86lS.net
動画サイトって普通ストリームじゃないの?
URLからダウンロード、エンコって、まず手作業でどういう手順で行うのか説明してくれないと
wshやPowershellでだって出来るかどうかも答えられないよ
773:デフォルトの名無しさん
16/11/14 19:02:24.4
774:0 ID:GWnO6+Yj.net
775:デフォルトの名無しさん
16/11/14 19:40:40.70 kXxSR+Dw.net
>>741
人に聞くならまず正しい日本語で頼む
> 今までは動画ページからm3u8形式の格納されてるURLをソースから引っ張ってきて
君には動画ページとかソースが何者かがわかってるんだろうけど、他の人にはそれが何者なのか?どこから与えられるのか?とか全然わからない
776:デフォルトの名無しさん
16/11/14 20:28:41.10 8ZP1uHGR.net
>>741
その動画サイトとやらを教えられない理由があるなら
先に説明しておく方が親切だよ
777:デフォルトの名無しさん
16/11/14 20:35:09.15 GWnO6+Yj.net
>>733でも書いた通り、openrec.tvというサイトです
動画ページはどこを見ても同じソースだと思うので深く考えず、URLを載せなかっただけですがやはり載せた方がよろしいでしょうか?
divタグ内に変数で各情報が載っておりますが、そこは重要ではなく>>738が仰ってる通りです
778:デフォルトの名無しさん
16/11/14 20:51:56.98 sZZGpXNZ.net
>>741
普段使いのcURLというCUIなダウンローダーで試した、使いたいツールがあるならお好みでどぞ
URLリンク(curl.haxx.se)
URLリンク(bintray.com)
Win32 - GenericにあるSSL, SSH対応版ね
前提として、外部ツールの検索パスは設定済みとする
バッチファイルの引数としてURLをひとつ渡す。例: batchfile.bat URLリンク(www.openrec.tv)
ここから
@echo on
setlocal ENABLEEXTENSIONS
cd /D %~dp0
@rem 引数有無と引数名チェック
if "%~1"=="" goto ERROR
echo;%1|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR
@rem URLのアドレスとHTMLを環境変数へ設定
set ADDR=%1
for %%I in (%1) do set HTML=%%~nxI
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=2 delims=, " %%I in ('type %HTML%^|find /I "m3u8"') do set TARGET=%%~I
echo ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
pause
exit
ここまで
779:デフォルトの名無しさん
16/11/14 20:56:46.40 sZZGpXNZ.net
すまそ、goto先がすっぽ抜けてた
中略
echo ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
pause
exit
:ERROR
echo 引数が無効のため処理できませんでした
pause
exit
ここまで
780:デフォルトの名無しさん
16/11/14 21:08:57.72 nGSer73d.net
curlってすごく便利なコマンドがあったね
連番ファイルとか今までperlやbashでスクリプト書いてたのがアホらしい
781:デフォルトの名無しさん
16/11/14 21:15:57.14 sZZGpXNZ.net
>>745
追伸、安全対策としてcurl処理のすぐ下に条件分岐も追加しておいてほしい
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
if not %ERRORLEVEL%==0
782:goto ERROR
783:デフォルトの名無しさん
16/11/14 21:28:24.00 GWnO6+Yj.net
おお、サンクスです・・・
が、一つわがままを言わせてもらうとやっぱり外部バイナリなりを使わないと出来ないですか・・・
どのPCでもすぐに使えるようにしておくと楽だなーと思ったのがきっかけだったので・・・
784:デフォルトの名無しさん
16/11/14 21:35:57.24 4gwDzXsT.net
そもそもffmpeg使う時点で外部バイナリ必須では?
それでも外部バイナリに頼らないでhttpダウンロードしたいっていうのなら
bitsadmin /transferって手がなくはないけど
785:デフォルトの名無しさん
16/11/14 21:37:40.26 sZZGpXNZ.net
>>749
bitsadmin.exe があるけど、拡張子がないサイトだと無理っぽかった、俺環かもだが
試してダメだったためcurlに書き換えた
786:デフォルトの名無しさん
16/11/14 21:38:23.41 GWnO6+Yj.net
なんというか、インストール不要であるのが理想的だなと・・・
それで、一時はWSHでjavascriptでHMTLをダウンロードしようかと考えていました
787:デフォルトの名無しさん
16/11/14 21:58:48.06 4gwDzXsT.net
>>751
それは知らなかった
そうすると後はPowerShellとか
powershell -C "$h = Invoke-WebRequest URLリンク(example.com;) $h.Content"
788:デフォルトの名無しさん
16/11/15 08:29:35.25 bLa91iv6.net
vbsでhttpすればいいんじゃね
789:デフォルトの名無しさん
16/11/16 04:24:03.14 tgJZOdTt.net
dir /ad /b /s "abc"
サブディレクトリ含め"abc"フォルダのパスを列挙したかったんだけど
子に"abc"がある時と無い時で挙動が全く変わる
子に"abc"が無ければ望み通りの結果になるけど
子に"abc"があるとそこで dir /ad /b /s されて全てのディレクトリが列挙される
"*abc"だと"zabc"も出て来るし
"*\abc"や"C:\TEST\*\abc"は構文error
if exist "abc" で例外処理しないとダメ?
何かサクッと出来る方法があるならお願いします
790:デフォルトの名無しさん
16/11/16 05:28:34.82 g04DIhTd.net
"\abc"
791:デフォルトの名無しさん
16/11/16 06:28:47.52 tgJZOdTt.net
>>756
それやると何故かカレントディレクトリは C:\TESTなのに (echo %cd% で確認)
ドライブ全体から検索してるのか C:\Users や C:\Program Files 配下の abcディレクトリまで表示されるんだけど Win10
792:デフォルトの名無しさん
16/11/16 09:56:14.36 l4m+U27H.net
こういうこと?
dir /ad /s /b | findstr /r \abc$
793:デフォルトの名無しさん
16/11/16 16:58:26.02 tgJZOdTt.net
>>758
dir /ad /b /s | findstr /r "\\abc$"
これで行けそうかな。ありがとう
/s スイッチの時フルパスで無ければ強制的にディレクトリ名orファイル名と見做してくれればいいのに
子にあると対象パスの省略形と見なし、無ければ検索するディレクトリ&ファイル名になるとか罠もいいところだわ
dir /ad /b /s "\abc"
これだとカレントディレクトリが無視されてドライブ全体?からabcフォルダが検索されるんだけど理由が分かる人が居たら教えて下さい
794:デフォルトの名無しさん
16/11/16 19:53:01.57 G/QgDslQ.net
>>759
for /r %%i in (.) do if "%%~nxi" == "abc" echo "%%~fi"
\abc みたいに先頭に \ があるとそれはルートを示すんだよ
DOS の頃から同じ仕様なんだけど
795:デフォルトの名無しさん
16/11/16 20:29:10.66 G/QgDslQ.net
>>760
ABC とか Abc とか abC とか有ったら /i を追加
for /r %%i in (.) do if /i "%%~nxi" == "abc" echo "%%~fi"
796:デフォルトの名無しさん
16/11/16 20:36:19.30 tgJZOdTt.net
dir /ad /b /s | findstr /r "\\%name%$"
てな場合nameの末尾にスペースが入ると意図した結果にならず
dir /ad /b /s | findstr /e "\%name%" で解決出来ました
>>759
for /r とif での方が間違いが無さそうですね。ありがとう
"\abc" は、まず dir /ad /b /s "C:\abc" とドライブ省略形の対象ディレクトリと見做して
対象が無ければ検索するディレクトリ名&ファイル名として扱われている感じなのかな
797:デフォルトの名無しさん
16/11/16 22:35:57.05 fww2Eit8.net
いままでdir /sのディレクトリ指定は開始位置を指定するもんだとばかり思ってたけど違うんだな
指定ディレクトリが存在してたらこの通りで他のディレクトリの下は対象外なんだが
存在しないと他のディレクトリの下へ探しにいくんだな
気をつけないといけないな
実行速度は遅いだろうが
forfiles -s -mabc -c"cmd /c if @ISDIR==TRUE echo @PATH\@FILE"
798:デフォルトの名無しさん
16/11/17 01:33:10.64 45hMt1B7.net
>>759
dir .\abc /ad /b /s
カレント配下ならドット付けとくんじゃないの
799:デフォルトの名無しさん
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:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています