X



【.cmd】 バッチファイルスクリプト %14 【.bat】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2020/08/15(土) 07:00:26.64ID:f3kW5kCx
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう

過去スレ
%13 http://mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 http://mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 http://echo.2ch.net/test/read.cgi/tech/1424858999/
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9 http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8 http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7 http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 http://pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
http://pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
http://pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
http://pc5.2ch.net/test/read.cgi/tech/1040614686/
0003デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:03:49.79ID:YDp7CJXQ
startコマンドでコマンドを実行がエラーになった時にerrorlevelで戻り値確認すると9020になっている。
/wait付けても付けなくても同じ。
これが正しいのかよくわからん
0005デフォルトの名無しさん
垢版 |
2020/08/16(日) 07:47:08.35ID:A8ymKSpp
そういう結果にはならんなー
(verify offはerrorlevelを0にセット、verify xxxはerrorlevelを1にセットする)

C:\>verify off
C:\>start xxx
ファイル xxx が見つかりません。
C:\>echo %errorlevel%
9059

C:\>verify off
C:\>start /wait xxx
ファイル xxx が見つかりません。
C:\>echo %errorlevel%
9059

C:\>verify off
C:\>start cmd /c verify xxx
C:\>echo %errorlevel%
0

C:\>verify off
C:\>start /wait cmd /c verify xxx
C:\>echo %errorlevel%
1

startやstart /wait自体が失敗したら9059
startが成功したら0
start /waitが成功したら、実行したコマンドの戻り値を返す
00063
垢版 |
2020/08/16(日) 09:57:56.96ID:+xZknRBW
>>5
そうそうそう。
9020と9059の違いはありますが、
起動か失敗するコマンドは独自に実行するとOSから別のエラーコード(起動失敗の直接の原因となったエラー)が返ってきますが、
それがstartコマンドから実行すると(自分の場合は)9020になって本来のエラーコードがわからないって事です。
0009デフォルトの名無しさん
垢版 |
2020/08/16(日) 18:45:13.11ID:5bX3HnFK
話変わるけど、括弧で結果が変わるのはなんで?

>color 00 & echo %errorlevel%
0

>(color 00) & echo %errorlevel%
1
0012デフォルトの名無しさん
垢版 |
2020/08/16(日) 19:29:38.18ID:vTgpRfn/
2度目のはerrorlevelを0にして試してないのでは?
&でつなぐと forの中の %変数% と同じで反映されない
試してないけど遅延展開有効にして!errorlevel!とすれば多分大丈夫
()は関係無い
0014デフォルトの名無しさん
垢版 |
2020/08/16(日) 19:42:36.63ID:vTgpRfn/
set errolevel=値 したらsetした環境変数が優先されerrorlevel自動代入の機能は死ぬ
set errolevel=
で消せば元に戻る
0016デフォルトの名無しさん
垢版 |
2020/08/16(日) 20:09:12.98ID:vTgpRfn/
pushd .
color 00 & echo %errorlevel%
pushd .
(color 00) & echo %errorlevel%

てしてみ?両方0になるから
2回目の1は1回目のエラーが表示されてる
%変数%の展開のタイミングは構文の評価時なのでそうなる
0017デフォルトの名無しさん
垢版 |
2020/08/16(日) 20:17:16.41ID:A8ymKSpp
>color 00 & echo %errorlevel%

これはcolor 00 & echo %errorlevel%を実行する直前のerrorlevelが表示される。
color 00の実行結果を知りたければ&でつながずに2回に分けて実行しなければならない。

>color 00
>echo %errorlevel%

あるいはcmd /v:onで遅延展開を有効にしてから
>color 00 & echo !errorlevel!
0019デフォルトの名無しさん
垢版 |
2020/08/16(日) 20:39:32.90ID:vTgpRfn/
この「構文評価時に展開される」というロジックを使って環境変数を配列のように使えたりする

for /l %%i in (1,1,5) do set A%%i=%%i
for /l %%i in (1,1,5) do echo %%A%%i%%
for /l %%i in (1,1,5) do call echo %%A%%i%%
pause
0020デフォルトの名無しさん
垢版 |
2020/08/16(日) 21:37:34.66ID:vTgpRfn/
set errorlevel=値 とsetした時とそうでない時の %errorlevel% は別物
%time% %date% も同じく
ビルトイン特殊環境変数 みたいな感じ
参照出来るけど環境変数としては存在しない
だから set e とか set d とかしても表示されない。環境変数ではないから
set t は tmp temp が表示されるはず
これらは set で同名の環境変数名を設定するとそちらが優先されビルトインの方は参照出来なくなる
環境変数に設定した場合は環境変数を消去するとビルトインの方を参照する
set time=0
echo %time%
set time=
echo %time%
echo はONです。とはならない
0023デフォルトの名無しさん
垢版 |
2020/08/17(月) 11:49:09.93ID:0uhm6UU6
if errorlevel 0 goto err
0028デフォルトの名無しさん
垢版 |
2020/08/22(土) 16:25:23.98ID:WW0Ct525
for %a in (a bb あ 冬 円 止 梅 十 申) do echo [%a]| findstr /r /c:"\[[^×][^×]*\]" && echo %a ok || echo %a ng
5cは大丈夫なのに7eがダメ
for %a in (a bb あ 冬 円 止 梅 十 申) do echo [%a]| findstr /r /c:"\[.\]" && echo %a ok || echo %a ng
findstrの正規表現の"."て1文字では無く1byteなんだな。これにも躓いた
0030デフォルトの名無しさん
垢版 |
2020/08/23(日) 00:55:18.89ID:W2kjoCYK
echo 陰|findstr /r /c:"[ア]"

echo 陰|findstr /r /c:"A"

"[ア]"は"0x8341" では無く、"0x83","0x41" の文字集合扱いってことみたいだね
"."の扱いもそうだし1byteでしかみてないの確定か。酷い
とするとほぼリテラルでしか使えないな
日本語文章のファイルからアルファベットが含まれる行を抜き出そうとして"[A-z]"とかしても関係無い行だらけになりそうだ
0031デフォルトの名無しさん
垢版 |
2020/08/23(日) 05:33:34.45ID:YFfZnyha
ついでに言うと正規表現ではない検索も変だろ
/R 無くても同じ。何のためのオプションだよ

>echo abc | FINDSTR "[b]"
abc

>echo abc | FINDSTR "."
abc
0032デフォルトの名無しさん
垢版 |
2020/08/23(日) 09:26:20.02ID:W2kjoCYK
それはバグってより設計者の好みだろう
デフォを自分仕様にしたかったのだろうね
findstr "SPはOR検索 + 正規表現"

文字列リテラルで検索したい時は
findstr /L "SPはOR検索 + 文字列リテラル"
findstr /c:"SPリテラル + 文字列リテラル"

SPリテラルで正規表現
findstr /r /c:"SPリテラル + 正規表現"

まあ/r の有り無しで正規表現のスイッチに統一して
/Lや/Cを廃止にしてspによるor検索をスイッチにした方が分かりやすかったろう
というか findstr /c:"abc" /c:"xyz" と複数置けるから""だけのor検索無くても困らないんだが設計者には必要だったのだろうね
"|"が正規表現のORとして無いことも関係あるのかも知れない
/b "# : ; @" とか
/r /c:"^#" /c:"^:" /c:"^;" /c:"^@" と書くより楽だし
0034デフォルトの名無しさん
垢版 |
2020/08/23(日) 19:13:37.50ID:YFfZnyha
FINDSTR で間違いやすい例を書いてみた。

>echo a"b"c | FINDSTR /L a"b"c || echo NG
NG

>echo a"b"c | FINDSTR /L a\"b\"c || echo NG
a"b"c

>echo "a\\b" | FINDSTR /L "a\\b" || echo NG
NG

>echo "a\\b" | FINDSTR /L "a\\\\b" || echo NG
"a\\b"
0040デフォルトの名無しさん
垢版 |
2020/08/25(火) 15:32:57.82ID:e1SePToE
難問のような書き方ができないのが初心者
難問のような書き方を回避するのが上級者、時間の無駄なので
0042デフォルトの名無しさん
垢版 |
2020/08/26(水) 06:29:54.99ID:uY0vxId0
https://stackoverrun.com/ja/q/1204675
昨日これにハマってた
こんなエスケープの仕方、気付けるかってのw
俺はリダイレクトじゃなくてfor do の()内でfindstrの後ろに)や&&がある時にダメだった
長いと見辛くなるけど()を付けずに1行で書くとエスケープ無くとも問題ない
findstrもsetと同じく基本的には改行で終わるようにするかサブルーチン呼んでネスト外にした方がいいっぽい
>>40 いやほんとそれな
なるべくネストさせない書き方だったりロジックが大事
0043デフォルトの名無しさん
垢版 |
2020/08/26(水) 08:34:28.36ID:PfiO/aOo
トラブルが嫌なら全部一行ずつ書けばいい
あとはcallとかgotoで制御して
そもそも初級者は何を回避したらいいか判別できない
ハマった経験が無いからね
0045デフォルトの名無しさん
垢版 |
2020/08/26(水) 09:18:45.66ID:3xqKZ5M9
>>44
ここはあめぞうのパクリサイトですお
0046デフォルトの名無しさん
垢版 |
2020/09/03(木) 14:07:53.97ID:k8mfa657
指定フォルダ配下の全フォルダに対してプログラムを実行したいんですが、
batってフォルダかどうかってどう判別すればいいんですか?
Pythonのisdirみたいなことって出来ますか?
0047デフォルトの名無しさん
垢版 |
2020/09/03(木) 14:42:52.91ID:+v/Eop6e
>>46
フォルダに必ずあるファイルの存在チェック
if exist "フォルダ\." echo フォルダです

又はdirコマンドの助けを借りるとか、他にもやり方はありそう
>nul 2>&1 (dir /ad "フォルダ"|find "<DIR>")&&echo フォルダです
0049デフォルトの名無しさん
垢版 |
2020/09/03(木) 15:38:32.84ID:14mNqQ/J
> 指定フォルダ配下の全フォルダに対してプログラムを実行
> isdirみたいな
for /r "c:\test" %%G in (.) do (
echo "%%G" "%%~aG"
call :sub "%%~fG"
)
pause &exit /b
:sub
set "a=%~a1"
if "%a:~0,1%"=="d" echo folder
exit /b
005146
垢版 |
2020/09/03(木) 21:43:59.26ID:s/SMQArb
ありがとうございます
いろいろなやり方があるんですね
0052デフォルトの名無しさん
垢版 |
2020/09/03(木) 23:29:38.18ID:YSxN3SpI
誰か挙げてくると思ってたけど嫌われてんの?w > forfiles
forfiles には @isdir というまんまディレクトリ判定のがある

他にもまぁ便利っちゃ便利なんだけど、遅いのであんまり使わない forfiles
0053デフォルトの名無しさん
垢版 |
2020/09/04(金) 00:30:01.26ID:kQRqRY30
xpで使えないと駄目だろ
0056デフォルトの名無しさん
垢版 |
2020/09/10(木) 03:56:31.22ID:udh9kkuM
@echo off &setlocal enabledelayedexpansion
set MD5=c472a022eb426cf1733a36e08b31c9f9
set T=0123456789ABCDEFGHIJKLMNOPQRSTUV
for /L %%i in (0,1,25) do (
set /a L=5*%%i/8, L*=2, H=L+2, R=5*%%i%%8
call set /a "N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%>>R&31
echo !N!
call set HASH=!HASH!%%T:~!N!,1%%
)
echo "%HASH%"
if "%HASH%"=="4MS0AHCT22R2VP97M1ONOO4PP7" ( echo OK) else ( echo Fail)
pause

ちょっと誰か助けてくれ。気になって眠れずこんな時間になってしまった
エスケープの仕方を教えて欲しい
上ので動いてるんだけどN左の引用符を外して
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^>^>R^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^>^^^>R^^^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^^^>^^^^^>R^^^^^&31
とか
call set /a N^=0x%%MD5^:^~!H!^,2%%%%MD5^:^~!L!^,2%%^>^>R^&31
call set /a N^^^=0x%%MD5^^^:^^^~!H!^^^,2%%%%MD5^^^:^^^~!L!^^^,2%%^^^>^^^>R^^^&31
とか%重ねたりとか何時間も色々試してみたけどNが空になる
何にどれだけエスケープが必要なのかのロジックが知りたい
forとcallで2段なんだと思うんだけど。。
分かる人居たらお願いします
0058デフォルトの名無しさん
垢版 |
2020/09/10(木) 08:08:01.59ID:udh9kkuM
>>57
ありがとう
それでも動いたし以下でも行けた
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>R&31
という事は右シフトとアンドだけが問題で他は関係無いっぽい
^だけじゃ出来ないのかな
0059デフォルトの名無しさん
垢版 |
2020/09/13(日) 15:25:35.94ID:W8TB3CjN
バッチファイルでメッセージボックスを表示してレジストリのバックアップをするとエラーになります
なんででしょうか
ご教示よろしくお願いいたします

Win7 HP SP1 x64

コード
@echo off
set title=VBScript
set text=%~nx0ファイルを実行しますか?
set type=52
set tmp=%TEMP%\temp.vbs
echo WScript.Quit(MsgBox("%text%",%type%,"%title%")) > %tmp% & cscript //nologo %tmp%
if errorlevel 7 goto end
reg export "HKCR\*" "%USERPROFILE%\Desktop\hoge.reg" /y
echo.
pause
goto end
:end
del %tmp%
exit

エラーメッセージ
エラー: ファイルに書き込めません。ディスクまたはファイル システムにエラーがある
可能性があります。
0061デフォルトの名無しさん
垢版 |
2020/09/13(日) 16:22:35.50ID:rbJ0gfd+
実行してないけど多分&で繋いだところで、まだ%tmp%ファイルが作られてないんじゃないかな
ついでに結果判定の行も実行前に通過しちゃいそう
0062デフォルトの名無しさん
垢版 |
2020/09/13(日) 17:33:48.42ID:rbJ0gfd+
実行してみた
原因は%tmp%を変更したからだね(おそらくregコマンドがtmpを使ってる)
%tmp%→%tmpfile%とでもしとけばいい
0065デフォルトの名無しさん
垢版 |
2020/09/15(火) 08:02:48.52ID:zq4P2IYm
昔はバカコーダーの代表格だったif else if...でひたすら羅列してるやつ、くっそ遅かったのに
今win10だとforで回すより速いんだがw 試して思わず吹いたw
XP機なんてもう無いから比較出来んけど
専門用語よく分からんがプリプロセッサだかインタープリタだかがセミコンパイル?最適化?してくれるようになったん?
カビ臭いセオリーに囚われてちゃイカンようだ
0066デフォルトの名無しさん
垢版 |
2020/09/15(火) 10:14:02.00ID:QjU8NMVB
for do 後の文中に call を入れると遅くなるのを何とかして欲しい。
処理時間が倍増する。下手すると何十倍もかかる
0067デフォルトの名無しさん
垢版 |
2020/09/15(火) 10:25:56.06ID:X+gTbBjK
フロッピーディスクでディスクキャッシュ無効にしてbat走らせると
1行ごとにbatファイルを再読み込みしているのが実感できて楽しいよ
0068デフォルトの名無しさん
垢版 |
2020/09/15(火) 14:56:26.93ID:zq4P2IYm
>>66
call set とかで多段展開よく使うんだけど
callの代わりにfor文にしてfor変数と遅延展開にして callやめたら確かに速くなったわ
見た目上は call set の方がシンプルで速そうなんだがなー
速い書き方模索してたので助かった. ありがとう
0070デフォルトの名無しさん
垢版 |
2020/09/15(火) 15:29:08.58ID:QjU8NMVB
おまけにバッチ優先だから気味が悪い

@echo off
echo set a=NG > set.bat
call set a=OK
echo %a%
pause
0071デフォルトの名無しさん
垢版 |
2020/09/15(火) 16:07:46.64ID:zq4P2IYm
偶にコマンド名と同じファイル名付けてトラブるバカが居るけどそれは流石にイチャモンが過ぎるだろw
0073デフォルトの名無しさん
垢版 |
2020/09/15(火) 18:34:43.10ID:X+gTbBjK
毎回set.batがあるかpath探してるのか?
0075デフォルトの名無しさん
垢版 |
2020/09/15(火) 19:48:46.31ID:/ea/Q9+g
callって元々バッチファイルを呼ぶためのコマンドだしな
環境変数を遅延展開するために使えるなんて公式ヘルプには載ってない
0077デフォルトの名無しさん
垢版 |
2020/09/18(金) 22:08:23.94ID:uEsKVG5e
windows板でいい答えが出なかったんでこっちに来ました。
windows10でログオンしなければ走らないプログラム(TV録画予約ソフト)があるので、Windows の自動ログオンを有効にし、
Autoexec.batに
 rundll32 user32.dll, LockWorkStation
と記述して直ちにロックすることとしています。

しかしながら、これは不意の停電などで再起動したときの為であって、
自分自身がPCの前にいる場合は、ロック解除をしなければならないのが面倒です。

そこで、バッチファイルで
 15秒待つ
 その間に何もキーが押されなかったら、
  rundll32 user32.dll, LockWorkStation
 を実行
 何かキーが押されたら、バッチファイルを終了
としたいのですが、どうしたらいいでしょう

N88BASIC(86)だとこんなイメージ
(10行の "to 1000"は適当に調節)
10 for i=1 to 1000
20 a$=inkey$
30 if a$<>"" then goto 70
40 next i
50 rundll32 user32.dll, LockWorkStation
60 end
70 i=1000:next i
80 end

ちなみに今は、autoexec.bat に
 TIMEOUT /T 15 /NOBREAK
 rundll32 user32.dll, LockWorkStation
として、すぐに作業したい場合は15秒の間にcmdの右上のxをクリックしてコマンドプロンプトを閉じています
0078デフォルトの名無しさん
垢版 |
2020/09/18(金) 22:14:12.38ID:uEsKVG5e
こちらの質問はもしかしたらスレ違いかもしれませんが。

あるフォルダ内のファイル一覧をテキストファイルに落としたいと思っています。
一太郎Ver4.3付属のMS-DOS2.11以来、DOSに慣れ親しんでいる私は、
CMD (又は見栄を張ってpowershell)で、
D:\hoge\hoge>dir > list.txt
なんてやってしまうのですが、
Windows10ネイティブのナウなヤングはWindows上で、どのようにやるのでしょうか
コマンドプロンプトなんて使ったことのない、普通のWindowsユーザーさんに教える必要があります
0082デフォルトの名無しさん
垢版 |
2020/09/19(土) 06:41:28.16ID:aPDv4PNE
>>78
エクスプローラーで選択してホーム、パスのコピー、メモ帳にコピペ保存
Windows板でレスがあったろ
0083デフォルトの名無しさん
垢版 |
2020/09/19(土) 07:30:51.34ID:RfEWMQRr
choiceはotherが設定出来たら言うことなしだったのになぁ
forもcontinueとbreakさえあれば。。
あと一歩をわざと使いづらくしてるのかと邪推してしまうわ
0084デフォルトの名無しさん
垢版 |
2020/09/20(日) 20:29:41.51ID:QtwFpjW/
恐れ入ります。初心者です。
約400個の.m4aファイルを.mp3形式に変換しようとしています。
以下のようなバッチファイル作成において、出力ファイル名の記述が大変なのですが、

ffmpeg -i aa001.m4a -ab 48k aa001.mp3
ffmpeg -i bb004.m4a -ab 48k bb004.mp3
ffmpeg -i c030.m4a -ab 48k c030.mp3

入力ファイル名の文字列だけを変数のようにして、出力ファイル名として利用できないでしょうか?
以下のようなイメージです。

ffmpeg -i aa001.m4a -ab 48k 変数.mp3
ffmpeg -i bb004.m4a -ab 48k 変数.mp3
ffmpeg -i c030.m4a -ab 48k 変数.mp3

説明は面倒かと思いますので、参照すべきURL、
もしくは検索ワードだけでも教えて頂けると助かります。
0085デフォルトの名無しさん
垢版 |
2020/09/20(日) 20:38:05.68ID:bYdUCAyz
m4a ファイルが D:\M4A\ に入っているとして
for %%L in (D:\M4A\*.m4a) do ffmpeg -i %%L -ab 48k %%~nL.mp3
0086デフォルトの名無しさん
垢版 |
2020/09/20(日) 20:57:17.46ID:QtwFpjW/
>>85
早速のアドバイス、ありがとうございました。
見事に変換できました。
私の発想の方向性が悪く、for文を使えば良かったのかと…
ありがとうございました。
0087デフォルトの名無しさん
垢版 |
2020/10/03(土) 10:47:40.18ID:wKgZGKzj
入力された文字列を使ってコマンドを走らせようとしてるんだけど変数に値は入るんだけどコマンドの方には空っぽで出力されるんだがなにか処理っているの?
%で囲むだけでいいよね?
0090デフォルトの名無しさん
垢版 |
2020/10/04(日) 00:03:10.85ID:1nqCsM3n
>>89
お前の質問が情報不足だから可能性のある回答を当てずっぽうで答えたのだろうよ

なお何かというと setlocal /? を読め
0092デフォルトの名無しさん
垢版 |
2020/10/07(水) 22:42:28.13ID:8t5FIA98
set /p moji=入力するのじゃ
echo 出力するでおじゃる %moji%

うん、何の処理もいらないな
0093デフォルトの名無しさん
垢版 |
2020/10/08(木) 13:42:17.79ID:BulPjeqX
遅延展開に関して setlocal /? にはロクな説明無いよ
詳しい説明が書かれているのは set /? の方
まあ87みたいなアホはスルーしとけ
0094デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:07:08.64ID:xYDxCkF1
入力処理を2回する時ってなにか特殊な処理とかいるの?
YESNO→文字列入力で
後者の処理で変数に文字列が入らない
0096デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:41:22.12ID:xYDxCkF1
>>95
@echo off
@setlocal
cd /d %~dp0
:START
rem 初期化
set NUM_INPUT=
set ID_INPUT=
set URL_INPUT=
set /P NUM_INPUT="URLはどちらですか?(1:DL/2:ok.ru/9:アップデート):"
IF %NUM_INPUT% equ 1 (
set /P ID_INPUT="IDを入力してください: "
youtube-dl https://lb.loadloadingfreevideo.top/hls/%ID_INPUT%/%ID_INPUT%.m3u8 --user-agent "Mozilla/5.0 (Intel Mac OS X)"
) ELSE IF %NUM_INPUT% equ 2 (
set /P URL_INPUT="URLを入力してください: "
echo 入力した文字列は %URL_INPUT% です。
youtube-dl %URL_INPUT%
) ELSE IF %NUM_INPUT% equ 9 (
youtube-dl -U
) ELSE (
goto :START
)
pause

VisualBatで確認したところ2回目の入力値の変数には値が入ってくるんだが出力されたときには空欄で出力される…
0097デフォルトの名無しさん
垢版 |
2020/10/09(金) 13:22:34.61ID:MFDBon0y
すみません、自己解決しました
0099デフォルトの名無しさん
垢版 |
2020/10/09(金) 14:11:49.12ID:ZREy0Q0x
行の解釈は、行を読み込んだ時点で解釈され、変数は置換される
()で囲まれた部分は全体で一行扱い
つまり括弧内で入力したって、それは括弧を抜けないと有効でなく
カッコ内は既に括弧前(if文の前)の値で置換済み
やっぱり上のレスと同じじゃん
0100デフォルトの名無しさん
垢版 |
2020/10/09(金) 14:35:46.06ID:ZREy0Q0x
解決策は
構造を変えて、入力と参照のどちらかをif文から出すか
遅延環境変数を使うか
call文で内部の処理をサブルーチンとして呼び出す形にするか
0101デフォルトの名無しさん
垢版 |
2020/10/09(金) 14:36:34.08ID:0eCLusxq
@echo off &setlocal
pushd "%~0\.."
:MAIN
set N=
set /p N= 選択 [ 1:ID, 2:URL, 9:Update ] :
if "%N%"=="1" call :DL_ID
if "%N%"=="2" call :DL_URL
if "%N%"=="9" call :UPDATE
goto :MAIN

:DL_ID
set ID=
set /p ID= ID? :
:: ここで入力値を確認するかfindstrでIDの形式として正しいかcheck
youtube-dl "https://lb.loadloadingfreevideo.top/hls/%ID%/%ID%.m3u8"; --user-agent "Mozilla/5.0 (Intel Mac OS X)"
exit /b

:DL_URL
set URL=
set /p URL= URL? :
:: ここで入力値確認
youtube-dl "%URL%"
exit /b

:UPDATE
youtube-dl -U
0102デフォルトの名無しさん
垢版 |
2020/10/09(金) 14:46:41.82ID:xYDxCkF1
>>100
検索ワードが悪かったみたいで調べてみたら遅延環境変数で忘備録書いてる人いたから読み解いてくる

>>101
ありがとう
試しに使ってみたら大成功だったよ
ルーチン呼ぶほうが簡単みたいね
感謝しきれないわ。
自分で作りかけもできるようになるまで模索してみる

みんなありがとう
0103デフォルトの名無しさん
垢版 |
2020/10/09(金) 19:13:39.03ID:bdkjFn4I
ここの人たちはコマンドプロンプトのことを「シェル」って呼ぶ?
あまり一般的じゃないですよね?
シェルって言ったらBashとかあっちのイメージなんですが
0104デフォルトの名無しさん
垢版 |
2020/10/09(金) 19:55:04.43ID:/2wG1kS2
dosshellよりはシェルっぽい
0105デフォルトの名無しさん
垢版 |
2020/10/09(金) 20:56:01.11ID:bdkjFn4I
Wiki見るとジャンル的にはコマンドプロンプトもコマンドラインインタプリタ(シェル)みたいなんですが、
あんまりシェルって読んでる人いないですよね
0106デフォルトの名無しさん
垢版 |
2020/10/09(金) 20:57:57.12ID:verB6kW/
そりゃWinfowのシェルはエクスプローラーだもの
0107デフォルトの名無しさん
垢版 |
2020/10/09(金) 21:33:57.08ID:pYgpY0Tn
cmdがコンソールくっついてんのは設計の失敗だよなあ
powershellでも同じ轍を踏んでるし
客から黒い画面邪魔って何億回言われてんだろう
あふぉが過ぎる
0108デフォルトの名無しさん
垢版 |
2020/10/09(金) 21:38:55.75ID:0CTZ1NG3
黒い画面なしで起動することは可能なんだから、
何億回も言われてるのはお前の問題
0110デフォルトの名無しさん
垢版 |
2020/10/09(金) 23:53:38.68ID:760t1BpC
>>96
youtube-dl とか、そんな複雑な処理は、Ruby, VBScript, PowerShell などで作るべき

複雑なバッチファイルなんて、保守できない
0111デフォルトの名無しさん
垢版 |
2020/10/10(土) 00:20:53.75ID:9msS7xxw
いや、Updateと普通のURLはbatに組み込まない方がいいだろ
直接使ってもさほど変わらない
ok.ru専属batにしたほうがいい
0113デフォルトの名無しさん
垢版 |
2020/10/11(日) 08:59:02.91ID:uWZZ3h6O
batのウィンドウを非表示で実行するためにvbs噛ませてたんだけど「このスクリプトには、悪質なコンテンツが含まれているため、ウイルス対策ソフトウェアによりブロックされています。」って言われるようになっちゃった
0117デフォルトの名無しさん
垢版 |
2020/10/11(日) 20:31:14.01ID:/L2D78D0
>>116
ショートカットのプロパティで最小化するなら表示されないでしょう
タスクバーには出てくるけど
0118デフォルトの名無しさん
垢版 |
2020/10/11(日) 21:12:48.29ID:P0HYJFd1
>>117
今win8で実行したら表示されなかった。
俺環'(116はwin10)だったみたい
原因調べてみよ、ありがとう
0119116
垢版 |
2020/10/11(日) 22:14:08.72ID:P0HYJFd1
勘違いだった
タスクスケジューラにショートカットを指定してもbatファイル本体の指定に切り替わるみたいなので
startコマンドにminオプション付けてbatファイル本体を実行してたのを
ショートカットで最小に指定してもdos窓が一瞬表示されると間違って覚えてた、恥ずかしい
0123デフォルトの名無しさん
垢版 |
2020/10/20(火) 11:26:40.30ID:jR74MZK7
使ってないけどこのダサい画面なんとかならんのかね
特に色使い
0124デフォルトの名無しさん
垢版 |
2020/11/10(火) 07:53:43.00ID:CPbRFFCx
>>113
おれも。
vbs 呼んでたのが原因か。
原因がわかって少し納得した。
けれど中身に関わらず勝手に実行できなくしてしまうのは大問題だよな > マイクロソフト
0125デフォルトの名無しさん
垢版 |
2020/11/27(金) 17:54:04.98ID:w5Az7J0d
cd ... 点3つ で2階層上のディレクトリに上がれるのって
どのWindowsの機能だっけ?
0128デフォルトの名無しさん
垢版 |
2021/01/08(金) 22:35:28.22ID:BCe3tfGB
コマンドプロンプトのコピペが化ける。
全角の二重引用符を貼り付けると半角になった。
他にも化ける文字ってあるのかな
0129デフォルトの名無しさん
垢版 |
2021/01/15(金) 23:17:05.02ID:na+cGcWl
forループでフォルダ内のファイルを取得するときにファイル名だけ抽出するコマンドってなんでしょう?
「%~n.txt」とか色々試したのですが、何を入れてもそんなファイルは存在しないといわれてしまいます(「%~n.txt」なら「%~n.txtは存在しない」)
ググってもわからなかったのでお願いします

for %%f in (フォルダパス) do (
 ここで処理したい
)
0135デフォルトの名無しさん
垢版 |
2021/01/16(土) 00:56:21.35ID:KTlk0YqY
>>131
ありがとう
help forというのはどこでもみれますか?
コマンドをたたいてもググってもやっぱり出てきません
0138デフォルトの名無しさん
垢版 |
2021/01/25(月) 19:13:54.74ID:P1MpJdzu
質問失礼します。
複数あるフォルダのフォルダ名を、内包しているファイル名に一括変更するスクリプトを作る事は可能でしょうか?
https://f.easyuploader.app/eu-prd/upload/20210124175415_346e74754c734e59584e73676b744330.png
分かりづらく申し訳ないのですが、この様にフォルダ名を内包されたファイル名に変更したいです。
色々と調べたのですが素人故どのような書き方をすればいいのか分からず…
宜しければご教授頂きたいです 宜しくお願い致します。
0139デフォルトの名無しさん
垢版 |
2021/01/25(月) 22:05:10.09ID:N4f0FgIr
>>138

setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /ad /b *') do (
set "dr=%%~nxa"
for /f "delims=" %%c in ('dir /a-d /b !dr! ^| sort /r') do set "file=%%~nc"
if defined file ren "!dr!" "!file!"
set file=
set dr=
)
endlocal
0140デフォルトの名無しさん
垢版 |
2021/01/25(月) 23:01:36.92ID:esdkgJAR
>>139
a.zip,b.zip,c.zip,d.zip…というのはあくまでも例で
実際にはいつもそんな名前ではないと思われるが?
0142デフォルトの名無しさん
垢版 |
2021/01/26(火) 00:23:50.23ID:ECUGH5kE
あとドライブ直下が対象だとdir /adだと、
$RECYCLE.BINやSystem Volume Informationなどシステムフォルダまで見えちゃうね
中のファイルが見えなかったりリネームできなかったりで実害は無いのかもしれないけど
/ad-sの方がいいね
0143デフォルトの名無しさん
垢版 |
2021/01/26(火) 00:44:20.98ID:CijQ7yAc
>>140
単純にdirで列挙されるファイルリストの最初のファイル名を使おうとしてるけど、何を言いたいのか分からない

>>141
確かにdir /o-nで問題ないです
sortでないとだめな理由はない
あとドライブ直下でテストはしてなかったからシステムディレクトリは盲点だった
ありがとう
0144デフォルトの名無しさん
垢版 |
2021/01/26(火) 01:23:39.15ID:ECUGH5kE
a010.txt, a2.txt
だとかエクスプローラとdirの昇順の並び順が異なってくるのはどう対処したらいいんだろう
0146デフォルトの名無しさん
垢版 |
2021/01/26(火) 02:28:00.25ID:mwA/u23E
>>139
ありがとうございます!!出来ました感激です
教えていただいて更に恐縮なのですが、ファイル名昇順の一番上の名前ではなく、一番最後の名前にするにはどの部分を変えれば良いのでしょうか…?
教えて頂ければ幸いです。宜しくお願い致します。
0148デフォルトの名無しさん
垢版 |
2021/01/26(火) 03:28:21.19ID:mwA/u23E
>>147
ありがとうございます
>>147こちらを先程の「>>139先頭ファイルへのリネーム.cmd」をしたフォルダで試した所「ファイルが見つかりません」とエラーメッセージが出てファイル名の変更が出来ないのですが何故でしょうか…。
まだ何もしていないフォルダへのリネームは>>147の「末尾ファイルリネーム.cmd」でも出来ました。一度しか使えないバッチファイルなのでしょうか…。
0150デフォルトの名無しさん
垢版 |
2021/01/26(火) 17:47:59.55ID:mwA/u23E
>>149
ありがとうございます
こちらに変更した所何度でも上書きでリネームすることが出来ました。
本当にありがとうございます
0153デフォルトの名無しさん
垢版 |
2021/01/29(金) 20:04:30.58ID:nZkldKO7
ドラッグアンドドロップしたファイル(複数)を下の
ffmpeg -i "AAA.flv" -vcodec copy -acodec copy "AAA.mp4"
に入れたいです。ドロップするファイルはffmpegが置いてあるフォルダにありますが、できれば異なるフォルダからのファイルでも可能にする方法もあれば知りたいです。
よろしくおねがいします。
0154デフォルトの名無しさん
垢版 |
2021/01/29(金) 20:16:16.41ID:MVM9RsSY
例えば、ドロップしたファイルが、a, b, c とすると、

どういうコマンドにしたいの?
0155デフォルトの名無しさん
垢版 |
2021/01/29(金) 20:27:09.50ID:nZkldKO7
a,b,cの動画ファイルをffmpegで変換して、それをドロップ元のフォルダに保存したいです。変換の内容は"a.flv"→ "a.mp4"です。
0156デフォルトの名無しさん
垢版 |
2021/01/29(金) 20:32:39.25ID:mJjQcNNM
ffmpeg.exeをpathの通ったディレクトリに配置
またはffmpegのPathを環境変数Pathに追加

:: D&Dで使うならショートカットの作業ディレクトリを空欄にする
:LOOP
if not exist "%~1" pause &exit /b
start "" ffmpeg -i "%~1" -vcodec copy -acodec copy "%~n1.mp4"
shift
goto :LOOP
0158157
垢版 |
2021/01/29(金) 22:55:34.81ID:MVM9RsSY
Ruby なら、デスクトップのa.rb に、下のように書いて、そのショートカットを作る。
ショートカットのリンク先を、C:\Ruby25-x64\bin\ruby.exe a.rb
とする。
これで、ショートカットにD&D した、すべてのファイルのフルパスが表示される

sleep は、コマンドプロンプト画面を終了させないため

puts ARGV

sleep 60 * 60 * 24
0159デフォルトの名無しさん
垢版 |
2021/01/30(土) 00:09:57.42ID:cwRmtLqZ
>>156
ありがとうございます!できました。
0160157
垢版 |
2021/01/30(土) 19:43:14.44ID:txnUgrNq
>>158
修正

Ruby なら、デスクトップのa.rb に、
puts ARGV
と書いて、そのショートカットを作る

ショートカットのリンク先を、コマンドプロンプトとする。
cmd@.exe で、ruby で、a.rb を実行する。
C:\Windows\System32\cmd@.exe /k "ruby a.rb"

書き込めないので、@を付けましたが、
cmd@.exe の、@を抜いてください

これで、ショートカットにD&D した、すべてのファイルのフルパスが表示される
0161デフォルトの名無しさん
垢版 |
2021/01/31(日) 02:25:30.48ID:x4IKZ5QX
batの初心者的質問する奴にとって、Rubyはとてもじゃないが手が出ないだろうな
0162デフォルトの名無しさん
垢版 |
2021/02/06(土) 05:23:20.56ID:oQfB5lBJ
cmdよりrubyが難解!って粘着して説くやつなんなんだろ
俺はフリーダムなruby結構好きだけど、rubyアンチはcmdスレにまで出張ってくるんだな
理解に苦しむ
0165デフォルトの名無しさん
垢版 |
2021/02/06(土) 18:39:35.41ID:EC31O1b+
スレ違いとまでは言わないけど、インスコしなきゃ使えないのでハードルは高い
0166デフォルトの名無しさん
垢版 |
2021/02/11(木) 12:48:49.05ID:VoBWc0YM
https://mevius.5ch.net/test/read.cgi/tech/1542779527/213
過去ログにあった7z圧縮して指定したディレクトリに出力するコマンドですが
指定したファイル名の前に日時を入れることはできるでしょうか

20210211_○○○○.7zのような感じになればいいです
0167デフォルトの名無しさん
垢版 |
2021/02/11(木) 14:43:56.17ID:kRZRZf9v
そのスレの、>211の、

set /p n=書庫名(拡張子なし)=
の前に、20210211_ を付ければ、

20210211_○○○○.7z
になるのでは?
0168デフォルトの名無しさん
垢版 |
2021/02/11(木) 15:18:16.59ID:VoBWc0YM
>>167
ありがとうございます
しかし今日ならそれでもいいのですが明日以降は
同じ20210211_という過去の日付になってしまいますよね
0170デフォルトの名無しさん
垢版 |
2021/02/11(木) 15:50:55.44ID:ILn4iPBu
dateは環境によって表示が異なる
各々の環境に合わせて置換整形する必要あり
0171デフォルトの名無しさん
垢版 |
2021/02/11(木) 16:20:50.85ID:VoBWc0YM
set n=%date:/=%_[ファイル名]
これで 20210211_○○○○.7z のように付きました
>>167
>>169-170
皆さんありがとうございました
0174デフォルトの名無しさん
垢版 |
2021/02/16(火) 17:33:37.55ID:05vP8Ot3
プロ仕様、というかシス環向けだからな…
とりあえずエイリアス一覧に載ってるのだけ覚えればcmdっぽいモノとしては使える
0175デフォルトの名無しさん
垢版 |
2021/02/16(火) 20:29:09.86ID:f5pz/7Q8
psは漢字ひらがなが露骨にズレるから辞めました

今は直ってる?
0178デフォルトの名無しさん
垢版 |
2021/02/17(水) 16:19:47.24ID:18/0dmLg
以前こちらで教えていただいた「内包しているファイルの一番降順のファイル名をフォルダ名にするバッチ」ですが >>138
ドラッグしていない同階層の別フォルダまで勝手にリネームしてしまったり、数回使うとファイル名が見つかりませんと出てリネーム出来なくなってしまいます。

setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /ad /b *') do (
set "dr=%%~nxa"
for /f "delims=" %%c in ('dir /a-d /b "!dr!"') do set "file=%%~nc"
if defined file ren "!dr!" "!file!"
set file=
set dr=
)
endlocal

こちら、ドラッグした同階層のフォルダまで全てリネームしてしまうようになってしまいますか?
ドラッグしたフォルダのみ、何度でも使えるようなバッチにするには何処を書き換えればよいか分かる方いらっしゃいませんでしょうか
0180デフォルトの名無しさん
垢版 |
2021/02/17(水) 17:44:37.07ID:L78BN9q1
ドラッグしたファイル名はパッチファイルの引数に渡る

引数を読んで処理するように作らないとね
0181デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:25:07.90ID:XjBeFdEa
どっかおかしいかも
@echo off
for %%i in (%*) do set d=%%~i& call :x
exit /b
:x
cd /d "%d%" || exit /b
FOR /F "delims=" %%j IN ('dir /b /a-d /o-n') DO cd .. & ren "%d%" "%%~nj" & exit /b
0182デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:52:08.32ID:ZmDWWGuE
>>179->>180
本当にすいません 勝手にドラッグするものと勘違いしていました ドラッグではなく同一階層内で実行でしたね…。
できればフォルダドラッグで実行できればとても楽なのですが
>>181
ありがとうございます 試させて頂きます
0183デフォルトの名無しさん
垢版 |
2021/02/17(水) 22:56:18.83ID:LXOFF6tt
ネットワークアダプタがデバイスの都合で、
「イーサネット 2」、「イーサネット 3」…とインターフェースの後ろの番号がどんどん増えていきます。
これの有効なインターフェース名を取得したいのです。
レジストリとかでもいいですが、
「netsh interface show interface」コマンドの出力の名前欄で、
最初の「イーサネット〜」を正確に取得したいのです。
がうまく切り出せません。
うまいやり方を教えてください・
0191デフォルトの名無しさん
垢版 |
2021/02/18(木) 06:38:53.51ID:tGVFfDdH
>>189
D&Dしたフォルダのフルパスは内緒か?
半角スペースは含まれているか?
半角の )^& 等の文字は含まれているか?
0192デフォルトの名無しさん
垢版 |
2021/02/18(木) 10:29:50.83ID:GbAv/KX+
@echo off&setlocal
set E=
:MAIN
set N=
pushd "%~1" || pause&exit /b
for %%a in (*) do set "N=%%~na"&goto :BR
:BR
popd
if defined N (ren "%~1" "%N%") else set /a "E+=1"&echo err:"%~1"
shift
if exist "%~1" goto :MAIN
if defined E pause
0194デフォルトの名無しさん
垢版 |
2021/02/19(金) 14:27:59.70ID:E9a6ZzGX
setlocalは使用変数を局所化する
コマンドプロンプトで実行後も、使った変数は使う前の状態に戻る
0195デフォルトの名無しさん
垢版 |
2021/02/19(金) 14:39:22.20ID:Wnqd+KEH
ドラッグ&ドロップで使用することだけを考えたら確かに不要だが
習慣としてつけておいた方がよさげ
0197デフォルトの名無しさん
垢版 |
2021/02/19(金) 17:34:28.26ID:Wnqd+KEH
コードの流用を考えたら無意味ではないと思うが
まあ今回の質問者にとっちゃどうでもいいことかもね
0198デフォルトの名無しさん
垢版 |
2021/02/19(金) 17:57:51.89ID:E9a6ZzGX
ちゃんとした言語を使っている人ほどそういう点に気を配る傾向があるかな
俺は分かってさえいればどっちでも良いと思う
付けててもbatの組み合わせとかに気をつけてるんだろうなって思うだけで
別に文句を言うようなことでは無いと思う
0200デフォルトの名無しさん
垢版 |
2021/02/19(金) 18:26:24.18ID:E9a6ZzGX
>>199
考え方は違ってて当然だし、文句言いたけりゃそれもまたありだろ
俺のことを言えば、自分で使う場合は付けないが
誰がどう使うか分からない公開するようなものだとちゃんと始末する
0201デフォルトの名無しさん
垢版 |
2021/02/19(金) 18:33:33.57ID:QeMEegpO
あと、思ったんだが「一番降順のファイル名」って何?
日本語は紛らわしいなあ
0202デフォルトの名無しさん
垢版 |
2021/02/19(金) 19:05:53.94ID:E9a6ZzGX
>>201の一番降順のファイル名ってので、goto :BRが必要だってのは分かったけど
>>192の内容ちゃんと見てなかった
けど、>>178のとは処理が違うのでは?
たぶん質問者は複数のフォルダをD&Dするんじゃなくて、一つのフォルダをD&Dしたら、
そのフォルダをリネームするんじゃなくて
そのフォルダの中のサブフォルダを全部リネームして欲しいんだと思う
0205デフォルトの名無しさん
垢版 |
2021/02/23(火) 00:07:13.08ID:mSOvESBF
Windowsバッチにて変更をするためのコマンドラインを教えていただけませんでしょうか。
端末が複数あり端末ごとのバッチファイルではなく端末一覧から選択し各端末のIP設定を行いたいです。

1:端末1
2:端末2
3:端末3

どのネットワークに接続しますか[1,2,3]?

上記のような感じで番号を選択すると下記の通り設定させたいです。
端末1
IP:192.2.10.101
サブネットマスク:255.255.255.0
デフォルトゲートウェイ:192.2.10.100
端末2
IP:192.168.10.101
サブネットマスク:255.255.255.0
デフォルトゲートウェイ:192.168.10.100

また、DNSサーバーは設定する必要はなく、IPv4のIP,サブネットマスク、デフォルトゲートウェイの3項目でよいです。


どなたかプログラミングに詳しい方助けてください。
0207デフォルトの名無しさん
垢版 |
2021/02/23(火) 02:25:49.54ID:8PZAxred
>>181>>192
もドラッグしても何も起こりませんでした
https://i.imgur.com/g5O9vPN.png
1、2、3というファイル名のZIPが入っている「TEST」フォルダをドラッグ
https://i.imgur.com/5AerIN4.png
このTESTというフォルダが3というフォルダ名になれば良いのですが…。
ドライブ直下では他のフォルダ名が変わってしまうと怖いのでP/新しいフォルダ/test
という階層で試しています
やはり不可能でしょうか
0208デフォルトの名無しさん
垢版 |
2021/02/23(火) 08:41:00.03ID:iGzMgm/L
おれ環で試したところ、
>>181 では test が 3 に変わったが。
test を test) にするとダメだが。
>>192 は test は変わらん。というか他人のバッチは知らんわ。

試しに、このバッチにドラッグしてみて
@echo off
echo %*
pause

こう表示されなければシステムの問題

P:\新しいフォルダー\test
0212デフォルトの名無しさん
垢版 |
2021/02/24(水) 08:24:23.61ID:PISIFT9J
>>210
助けろって全部作れってことかよ
だるいし「、、、」が気持ち悪いからパス

使うコマンド教えたのに自分で作って貼りもしないくせに作れは論外
あとは使い方調べてやりたいようにやるだけじゃん
自分で作らないと理解できずに>>178みたいになるのが目に見えてる
>>1読んだらそういうスレじゃないことわかるだろ
0215デフォルトの名無しさん
垢版 |
2021/02/24(水) 22:09:11.14ID:lmMJyFPq
つーかなんで手動選択なん?
端末で走らせるなら端末名取れるだろ
0216デフォルトの名無しさん
垢版 |
2021/02/24(水) 23:24:44.75ID:m3EDeT3k
どういうこと
そのBATはUSBか何かに入れて各端末に持ち込むのか
それとも既に繋がっている端末にリモートで変更するのか
(各端末が一つのネットワークじゃ無くて別なところも気になる)
0218157
垢版 |
2021/02/25(木) 11:51:36.12ID:dOCTT7eM
>>138

>>157-160
の、160 のa.rb 内に、Ruby で書いた。
このショートカットに、複数フォルダをD&D する

ソートの昇順・降順は、ソート後の配列.first/last で

ただし、日本語のファイル名では、\x{8356}\x{8387}\x{815B} のように表示されてしまう。
DryRun を使ったので、実際には実行されません

require 'pathname'
require 'fileutils'

# ドットよりも前の、文字列を返す。ab.cd.xy なら、ab を返す。
# ab.cd を返したいのなら、rindex を使う

def before_dot( str )
idx = str.index( "." ) # ドットの位置を、先頭から探す
# idx = str.rindex( "." ) # ドットの位置を、末尾から探す

if idx # ドットが有れば
str[ 0, idx ] # 最初から、idx 文字数分を切り出す
else
str
end
end

次へ続く
0219157
垢版 |
2021/02/25(木) 11:53:03.33ID:dOCTT7eM
# ARGV は、D&D した複数フォルダの配列で、1つずつ処理する
ARGV.each do |full_path|
dir_path = Pathname.new( full_path )
next unless dir_path.directory? # フォルダ以外は処理しない

# 直下のファイルのみを取り出して、ファイル名でソートする
file_names = dir_path.children( ).select( &:file? ).map( &:basename ).map( &:to_s ).sort
file_name = file_names.first # 昇順
# file_name = file_names.last # 降順なら、これを使う

file_n = before_dot( file_name ) # 上で定義した関数
dest_path = dir_path.parent.join( file_n ) # 変更後のフォルダ名

# 変更後のフォルダ名が、既に存在する場合は、エラー
raise "#{ dest_path } が、既に存在します" if dest_path.exist?

FileUtils::DryRun.move( dir_path, dest_path )
end
0226デフォルトの名無しさん
垢版 |
2021/03/09(火) 05:40:32.23ID:WB4N5jzF
delコマンドでファイルを消すことはできますが
ゴミ箱に入れたい場合はどうすればよいのでしょうか?
0228226
垢版 |
2021/03/13(土) 01:44:32.44ID:aqgAbZuG
>>227
cmdではムリポな件、承知しました><
0229デフォルトの名無しさん
垢版 |
2021/03/13(土) 03:06:59.13ID:pthlsCp5
>>228
なんで?
WSHやPowershellでのサンプルがいっぱい見つかるだろ
それをbatに組み込めばいいだけ

【例】
set filepath=%~f1
rem -- 削除確認メッセージ付き ---
powershell -C "(new-object -comobject \"Shell.Application\").NameSpace(0).ParseName(\"%filepath%\").InvokeVerb(\"delete\")"

rem -- メッセージなし ---
rem powershell -C "(new-object -comobject \"Shell.Application\").NameSpace(10).MoveHere(\"%filepath%\")"
0230デフォルトの名無しさん
垢版 |
2021/03/22(月) 08:41:49.24ID:ERIrsy59
「color ec」で黄色背景の赤文字とかやってたんだけど
いつのまにかカスタードクリームみたいなうっすい黄色になってるな
XPの頃は真っ黄色だったのにいつからこんな中途半端な色になったんだ?
0231デフォルトの名無しさん
垢版 |
2021/03/22(月) 08:59:02.64ID:gb0Yw1OG
c md.exeちょいちょいアプデされてるからな
プロパティで[レガシーコンソールを使用する]をオンにしたら昔の仕様になるかもよ
0236デフォルトの名無しさん
垢版 |
2021/03/22(月) 13:27:25.65ID:yqDq0P8A
以前それを含むウィルスの一部コードだと思われるものが貼られまくったせいだと思う
0237デフォルトの名無しさん
垢版 |
2021/03/22(月) 13:29:51.79ID:yqDq0P8A
補足しておくと、ノートンが反応しまくってスレdatファイルを消しちゃうので
スレが見れない連発ね
0240デフォルトの名無しさん
垢版 |
2021/03/22(月) 21:10:49.47ID:ERIrsy59
>>232
なるほど時代(LCD)に合わなくなったってことか、サンクス。。

>>231
再起動必要みたいだから今度再起動する時(1か月後ぐらいかな?w)に試してみます。
0241デフォルトの名無しさん
垢版 |
2021/03/22(月) 21:18:24.54ID:ERIrsy59
しかしMS-DOS時代みたいなあのどぎつい黄色が良かったんだがなあ・・・残念・・・
0244デフォルトの名無しさん
垢版 |
2021/03/23(火) 00:45:55.21ID:5blhcD6i
>>242
ANSI.SYSな
0246241
垢版 |
2021/03/23(火) 22:14:27.04ID:lgCFvm/4
>>243
現場の検証用PCなんでレジストリいじるのはNGでしたわw
でもこんな方法もあるんだね。参考になったよサンクス
0247デフォルトの名無しさん
垢版 |
2021/03/24(水) 14:20:41.98ID:yj6gJxmr
漏れは、WSL2 のコンソールが見にくいので、
Microsoft 製のColorTool で、配色テーマを変えてる

多分これも、レジストリをいじっている
0248デフォルトの名無しさん
垢版 |
2021/03/24(水) 16:41:09.17ID:cQ6WYo0q
俺は最近 Windows Terminal を使いだした
settings.jsonの設定が面倒くさい
でも >>128 のようなコピペのバグが無いので助かる
0251デフォルトの名無しさん
垢版 |
2021/03/24(水) 21:27:53.44ID:KCz6csQE
>>250
改めてアップデートしてみた試したけど
最近のバージョンだと、指定できるようになったんだな
さらに1.6でコンテキストメニューにデフォルトで登録されるようになってた

ただ、相変わらずライブラリやドライブで開くことはできないようだねぇ
0254デフォルトの名無しさん
垢版 |
2021/03/26(金) 18:20:21.52ID:moYXNnAH
ストアアプリもマトモなやつは増えてきたよ
UWPのタブレットUI強制やら特大ウンチ機能制限やらがだいぶ撤廃されて、デスクトップアプリと大差なくなったからね、ようやく
まぁ遅きに失した感あるんですがね
0255デフォルトの名無しさん
垢版 |
2021/03/26(金) 20:02:56.96ID:Wy51+x+D
wt画面に複数ファイルD&Dすると全部表示されて便利だわ
コマンドの引数に使える
cmd画面だと一個だけだ
0256デフォルトの名無しさん
垢版 |
2021/03/26(金) 20:16:38.66ID:yyPdQtcN
ストアって時点でマトモとかそういう問題じゃないんだがな
OSにプリインストールでもされてれば別だが
0260デフォルトの名無しさん
垢版 |
2021/03/26(金) 20:57:10.75ID:Wy51+x+D
まだ動作が若干あやしいぞ
カーソルがずれてたり
意味不明な文字が表示されたり
0261デフォルトの名無しさん
垢版 |
2021/04/03(土) 13:19:14.73ID:YB/KO+42
batファイルで並列処理するのってやっぱ無謀?
フォルダ内の画像を4並列で別の形式に変換したいみたいなやつ
0265デフォルトの名無しさん
垢版 |
2021/04/03(土) 19:48:52.56ID:YB/KO+42
>>264
なるほど
tasklistでプロセスが生きてるか確認ってのは思いついたけどプロセス数を数えられるのは知らなかった
0266デフォルトの名無しさん
垢版 |
2021/04/03(土) 21:06:39.36ID:vSOTAguS
ただなあ
画像変換ごとき瞬時に終わるのでタスク監視でカウントしてる暇がないんじゃないかと
0267デフォルトの名無しさん
垢版 |
2021/04/03(土) 21:39:55.57ID:YWCwVZAz
何か昔書いたレスが掘り起こされてるw

画像だったら RalphaPlus を使っちゃうな
フリーでないシェア版だけど64bit版でメモリ不足になることもまずなくて、
32bit版では落ちてしまうような、大きめな16画像並列とかやっても問題ないし、
変換設定ファイルをいくつも作成できるので、バッチから呼び出すのにも
都合よくて便利、おすすめ
4並列程度ならフリーのでも多分問題ないと思う、並列処理の並列(多重起動)したいなら
シェア版が必要になるけど
0268デフォルトの名無しさん
垢版 |
2021/04/03(土) 21:40:52.86ID:YB/KO+42
>>266
最近の画像規格は変換に時間かかる上CPU使い切らないという事が多々あるからそこらへんは大丈夫だと思う
まだ試してないけど
0269デフォルトの名無しさん
垢版 |
2021/04/04(日) 12:25:17.64ID:BHN4NYpU
外部ツールに頼るんならpwshの力ちょっも借りてもいいのでは
echo file1 ... | % -parallel {コマンド $_; ...}
$_はfile_n、ジョブ数のデフォルトは5

もしかしたらプリインストールの古いやつでは動かないかも
0270デフォルトの名無しさん
垢版 |
2021/04/09(金) 23:29:04.49ID:0EdakHoK
すみません、勉強不足なのですが教えていただけますでしょうか。
コマンドプロンプトで、出力結果から特定の値だけ抜き出したいのですが、
1行に表示される一部だけ 文字数以外で指定ってできないでしょうか?

ADのユーザ名を検索して日本語名だけ抽出したいのですが
dsquery user -samid "username" で検索して出てくる
"CN=XXX XXX,OU=ouname,DC=Dcname,DC=local "

CN= のあとのXXX XXXだけ変数にいれたいのですが出来なくて困っています。
0272デフォルトの名無しさん
垢版 |
2021/04/10(土) 11:17:28.20ID:QzAXiJxN
>>271
ありがとうございます。

そもそも自分のやりたいこと書かずにすみません、
自分の環境なのかうまくうごきませんでした。
batファイルでADから実行している利用者情報をCSVかなにかでエクスポートしようとしていまして
usernameだとログイン中のIDで表示されるので

dsquery user -samid %usernam%
とやって、cn=に出てくる日本語名だけを抽出したかったのですが、
皆さまだったらどのような方法をされるのでしょうか。
0273デフォルトの名無しさん
垢版 |
2021/04/10(土) 12:23:55.67ID:bRqDVIlt
現在進行系の質問ありますけど追加質問させてください
for /F %A in ("テスト") do echo %A %A
としたときに「テスト テスト」が出力されますが
「テスト %A」を出したいときはどうすればいいですか?
0274デフォルトの名無しさん
垢版 |
2021/04/10(土) 12:28:34.76ID:bRqDVIlt
連投すみません
for /F %B in ("テスト") do echo %B %A
もありなんですけど%のエスケープ知りたいです
0275デフォルトの名無しさん
垢版 |
2021/04/10(土) 13:02:42.59ID:lls/f8GA
こっちでは dsquery を試せないので推測で

@echo off
for /f "delims==, tokens=2" %%i in ('dsquery user -samid %USERNAM%') do set ver=%%i
echo %ver%
pause
0278デフォルトの名無しさん
垢版 |
2021/04/10(土) 13:13:27.40ID:IU1rFRRP
>>273
set テスト=%A
for /f %A in ("テスト") do call echo %A %%A%

バッチは%→%%と重ねる事で%のエスケープ出来るけどコマンドプロンプトでは効かない
環境変数なら
echo %cd% %^cd% "%^cd%" ^"%^cd%"
でエスケープ可能だけど
for変数は>>274しか無いかも
for変数はアルファベットが都合悪いならメタ文字以外の記号も使えるしwin10で試したらひらがなも行けた
0279デフォルトの名無しさん
垢版 |
2021/04/10(土) 13:39:39.87ID:ULgsRvVE
フィルタリング機能はおそまつなので
275のように一旦全部のユーザーをファイルに書き出してやったほうがいい
あとはテキストエディタでも表作製ソフトでもPowershellとかでもいいけど
正規表現でフィルターすればいい
というかdsqueryコマンドにフィルター機能ぐらいありそうなもんだけど
別のコマンドと組み合わせて使うならエスケープ文字は^なので
for 〜 in ('dsquery 〜^|dsget 〜')
0280デフォルトの名無しさん
垢版 |
2021/04/10(土) 13:46:42.23ID:ULgsRvVE
unicodeが使われてる可能性もあるので
安全性を取るならbatを使わずにdsqueryの出力を直接ファイルに書いた後に加工するのがいいかも
とかcsvとか言ってるのでどうせエクセルとかで使うんなら
そのまま"CN=〜"の出力を読み込ませたあとで加工とかも出来そうなもんだけど
0281デフォルトの名無しさん
垢版 |
2021/04/10(土) 14:16:22.00ID:ULgsRvVE
あれ全ユーザーとかじゃなくて一つのユーザーだけなのか
どっちにしろPowershellでやった方が楽だと思うよ
0282デフォルトの名無しさん
垢版 |
2021/04/10(土) 20:33:13.55ID:hTFrpgtD
>>272 こんな感じかなあ

 @echo off
 setlocal ENABLEDELAYEDEXPANSION

 for /F "tokens=1* delims=," %%I in ( 'dsquery user -samid %usernam%' ) do (
  set HEAD=%%I
  set TAIL=%%J
  :LOOP
  if "!HEAD!" == "" goto :NEXT
  for /F "tokens=1* delims==" %%I in ( "!HEAD!" ) do (
   if "%%I" == "CN" set CN=%%J
  )
  for /F "tokens=1* delims=," %%I in ( "!TAIL!" ) do (
   set HEAD=%%I
   set TAIL=%%J
   goto :LOOP
  )
  :NEXT
  echo.!CN!
 )
0283デフォルトの名無しさん
垢版 |
2021/04/10(土) 22:12:46.25ID:kfNVSQGB
>unicodeが使われてる可能性もあるので
これがあるからバッチでは原則処理しない
>>282みたいなことしてたらその内ひどい事になる
0284デフォルトの名無しさん
垢版 |
2021/04/11(日) 00:53:55.03ID:X+5g0Z/F
>>275
ありがとうございます。%username%ですね Eが抜けました。
CSVはエクセルではなくてserverにOffice入れてないと、adidの日本語名にするのもちょっと骨でした。
ご指摘通りpowershellでできればいいのでしょうが
powershellは出来る人がいないのとバッチが多すぎて一部分を直して運用していました。
0286デフォルトの名無しさん
垢版 |
2021/04/26(月) 14:11:50.54ID:FVrz/3IC
実行中のプロセスのCPUアフィニティを変更するコマンドは何ですか?

タスクマネージャの[詳細]タブで変更したり、
startコマンドの/affinityスイッチは知ってます。

ちなみに、目的はshogigui.exeとaperyに同じコアを使わせないことです。
0288デフォルトの名無しさん
垢版 |
2021/04/26(月) 17:25:33.86ID:vupwGLI3
実行中のプロセスで変更するコマンドって見当たらないな
タスクマネージャーとかのGUIアプリしか見つからない
俺も知りたいわ
0289デフォルトの名無しさん
垢版 |
2021/04/26(月) 18:44:26.08ID:g+6GvbLi
SET
 powershell -c "(get-process hoge).processoraffinity=1"

GET
 powershell -c "get-process hoge|select-object processoraffinity"
0290デフォルトの名無しさん
垢版 |
2021/04/26(月) 19:13:44.30ID:g+6GvbLi
GET/SETで分けることもないか(代入か否かで)
あと、同じプロセスイメージが複数ある場合の例(psはget-processのalias)
 powershell -c "ps chrome|%{$_.processoraffinity}
0292デフォルトの名無しさん
垢版 |
2021/04/28(水) 18:09:24.25ID:TBHOCaij
実行中のプロセスをキルした後、exeを起動する.batは組めないでしょうか?
ご教授お願いしたいです。
0293デフォルトの名無しさん
垢版 |
2021/04/28(水) 19:31:14.30ID:Sz6ocakQ
実行中のプロセスを全部キルしたら多分Windowsがまともに動かなくなるぞ
0296デフォルトの名無しさん
垢版 |
2021/04/30(金) 13:34:43.19ID:KlpY5+7M
>>292
キルしてもすぐ消えないプロセスがあるから失敗するということかな
キルしたらもう一度プロセスが消えたかどうか確認しあればまたキルする
消えたら再起動

live2chは終了やキルしても消えない時がある(ゾンビ)
0298デフォルトの名無しさん
垢版 |
2021/05/05(水) 17:03:35.09ID:jBlPB1Jr
>>296
>live2chは終了やキルしても消えない時がある(ゾンビ)

アンデッドには効かなかったはず…
0301デフォルトの名無しさん
垢版 |
2021/05/11(火) 13:03:03.56ID:Ql061JAF
このスレってこういう呪文書く人多いよね
enabledelayedexpansionとかも呪文にしか見えないし
0305デフォルトの名無しさん
垢版 |
2021/05/11(火) 14:52:11.19ID:0OaQcACp
/d- とどっちがいい?
0307デフォルトの名無しさん
垢版 |
2021/05/12(水) 02:11:31.96ID:Suipbxh4
CPU温度をコマンドで取得したいのですが、OS標準の方法は無理ですかね
WMI(ACPI)は固定値の温度が返ってきて取得不可でした
OpenHardwareMonitorもダメ(恐らく内部でWMIを呼び出してる)
当然ながらhwmonitorやCoreTempでは取得できますが、値をバッチで取り込みたいんですよね…
0309デフォルトの名無しさん
垢版 |
2021/05/12(水) 20:32:09.46ID:Suipbxh4
>>307
コマンドラインに出力される以外はOpenHardwareMonitorの実行内容と同じ結果でした
1ボードマイコンのlinuxは
cputemp=`cat /sys/class/thermal/thermal_zone0/temp`
とかで簡単に温度が取れるのになんでじゃろ
0312デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:00:07.42ID:yHTntpLS
出力をgrepとsedあたりで拾えたけど、それじゃダメなの?
BusyBox入れておけばどちらも使える
0314デフォルトの名無しさん
垢版 |
2021/05/14(金) 23:44:02.34ID:T4yhaoFz
おかげさまでCPU自動温度調節バッチができました
CoreTempのログ出力間隔がなぜかGUIの画面で設定が反映されないのでCoreTemp.iniを直接いじってLogInt=3;にしました
0315デフォルトの名無しさん
垢版 |
2021/05/21(金) 14:43:20.40ID:86NTjzBm
引数で✳︎1って書いて実行するとダメで
✳︎✳︎1と書くと実行してくれるというか
✳︎1として認識してくれる
こういうのなんて言うんだっけ?
0317デフォルトの名無しさん
垢版 |
2021/05/21(金) 15:56:12.09ID:Ui9xkSyb
エスケープ文字でいいのかな?
どう伝えたらいいか迷ってました。
ありがとうございます!!
0319デフォルトの名無しさん
垢版 |
2021/07/29(木) 11:36:44.20ID:tRu2KZQa
~1は付いてるだろ
0325デフォルトの名無しさん
垢版 |
2021/08/22(日) 10:21:12.87ID:ROFzyAkg
お教え下さい
バッチファイルでなんとかあれこれ作っているんですが、curlとjqコマンドを使ってJSONからURLを拾おうと思っています
curl -X GET %url% | jq -r .body.playback.video_link
そこで、video_linkというkeyにURLが入っているのですが、video_link[0]、video_link[1]とJSONによって何個か入っていることがあります
この時、[1]の方のURLが欲しいのですが抜き出し方が分かりません
もちろん[2]、[3]とURLが入っている事もあります
その時は一番大きい値から取りたいです

for文で配列を回して読んでnullの1個前を取る方法しか無いのでしょうか

ほとんど理解していないレベルですが、お知恵をお貸しいただければ幸いです
0327デフォルトの名無しさん
垢版 |
2021/08/22(日) 13:17:28.64ID:ROFzyAkg
>>326
無知とはいえ、目からウロコです
ありがとうございます、大変助かりました!

あと、もう一つお聞かせ下さい
上のコマンドの結果を変数に入れたかったので、for文でdo setしたのですが、jqを使うと動作しません
for /f "usebackq" %%a (curl -X GET %henkan% | jq -r ".body.playback.video_link[-1].url) do set urlhoge=%%a
とやるとエラーになります

またもやお教えいただけると助かります
よろしくお願い致します
0328デフォルトの名無しさん
垢版 |
2021/08/22(日) 13:25:20.71ID:ROFzyAkg
連投すみません
自己解決しました

パイプで別のコマンドを繋げてる時はカッコ内では | だけではなく ^| としなくてはならないのですね
0332デフォルトの名無しさん
垢版 |
2021/08/22(日) 19:09:07.18ID:ROFzyAkg
ああすみません、うる覚えてで打ってました
for /f "usebackq" %%a in (`curl -X GET %henkanurl% ^| jq -r .body.playback.video_link[-1].url`) do set m3u8url=%%a

これで無事に動きました
0336デフォルトの名無しさん
垢版 |
2021/08/24(火) 07:13:42.95ID:ttKQ7L6u
うる覚えは誤り、または誤りから派生した方言だとされている

うろ 空洞
うろん 怪しい、疑わしい、乱雑
から来ているから 「うろ覚え」 が正しいよ

見せて → 見して
などと同様の変化でもあるだろう
見(い)せ(え)て(え) → 見(い)し(い)て(え)
と母音が前の音に引っ張られ変化するパターン
言い易くなるからか幼児語などに多く見られ、都会に比べての昔の田舎の人など知能の劣る者らが用いる傾向がある
0338デフォルトの名無しさん
垢版 |
2021/08/24(火) 11:06:35.68ID:A9/4ufwo
お世話になります。

---- boo.bat内容 -----
01:  @ECHO OFF
02:
03:  SET list=A B C D
04:  SET n=0
05:
06:  FOR %%a IN (%list%) DO (
07:    ECHO %n% : %%a
08:    SET /A n+=1
09:  )
10:
11:  ECHO %n%

----- 出力 -----
  0 : A
  0 : B
  0 : C
  0 : D
  4

出力が、
  0 : A
  1 : B
  2 : C
  3 : D
  4
とならないのはなぜ?
また、このような出力を得たい時はどうすればよいですか?
0341デフォルトの名無しさん
垢版 |
2021/08/24(火) 13:03:43.42ID:ttKQ7L6u
@echo off &setlocal enabledelayedexpansion
set "LIST=A B C D"
set N=0
for %%a in (%LIST%) do echo !N! : %%~a&set /a N+=1
echo %N%
pause &exit /b
0343338
垢版 |
2021/08/25(水) 08:35:00.27ID:CHwZclnY
340,341,342 ありがとう。
遅延?がどうこうって、勉強になりました。
単純な展開ですので、341の !var! 展開を使います。
0345デフォルトの名無しさん
垢版 |
2021/08/25(水) 15:31:20.26ID:Fod5ZYNl
CALL %FILENAME%
CALL "%FILENAME%"
職場のパソコン変えたら上で動かなくて下に修正することになったんだけど仕様変更あった?
0347デフォルトの名無しさん
垢版 |
2021/08/25(水) 18:09:16.31ID:eN7VzoDp
echo onなら環境変数展開後のコマンドラインが表示される
なにがおかしいのかステップ実行で確認してから質問してくれ
0350デフォルトの名無しさん
垢版 |
2021/08/25(水) 19:11:06.73ID:sbFyoxUW
区切り文字あればそれが原因でしょ
引数がフルパスなら上位フォルダもチェック
念の為にきくけどバッチファイルだよね
0358デフォルトの名無しさん
垢版 |
2021/08/30(月) 09:59:58.73ID:2ApHZNp2
%FILENAME%に空白が含まれたら、最初の空白までが%1になるの当たり前じゃん
これを考え落とすって、8.3時代で頭の更新が止まったままの化石だね
0360デフォルトの名無しさん
垢版 |
2021/09/01(水) 12:25:22.16ID:BpsqJM8W
複数動画ファイルをバッチにドロップしてH265で再エンコードしたいです。保存先はドロップ元と同じです。自分で作ってみたのですがうまくいきませんでした。改善点を教えてほしいです
@echo off
%~d1
cd "%~p1"
type nul > ./files.txt

SET NAME_1=%~n1
SET NAME_2=%~n2
SET NAME_3=%~n3
SET NAME_4=%~n4
SET NAME_5=%~n5

:start
IF "%~1"=="" GOTO ffmpegstart
IF "%~x1" == ".MP4" GOTO add
IF "%~x1" == ".mp4" GOTO add
GOTO next

:add
echo file "%~1" >> ./files.txt

:next
SHIFT
GOTO start

:ffmpegstart
ffmpeg.exe -i "%~p1files.txt" -c:v libx265 -c:a copy -crf 22 -tag:v hvc1 "%~p1"%NAME_1%""_k_h265.mp4"
pause

ドロップせずに、パスを書いて実行したら成功はしました。
0361デフォルトの名無しさん
垢版 |
2021/09/01(水) 12:38:53.45ID:3LGwAbit
たから echo onにしろっつってんだろ
0362デフォルトの名無しさん
垢版 |
2021/09/01(水) 16:04:27.85ID:rR7+iwTB
@echo off
:LOOP
if not exist "%~nx1" pause &exit /b
if exist "%~n1_k_h265.mp4" echo ERROR: 出力と同名のファイルが存在します&pause &exit /b
ffmpeg.exe -i "%~nx1" -c:v libx265 -c:a copy -crf 22 -tag:v hvc1 "%~n1_k_h265.mp4"
shift /1
goto :LOOP
0364デフォルトの名無しさん
垢版 |
2021/09/01(水) 17:35:20.23ID:JwKVF6M3
@echo off って完成してからつけるものじゃないのか
最初からあるなんて随分と自信があるんだなぁ
0366デフォルトの名無しさん
垢版 |
2021/09/01(水) 21:20:41.59ID:CWQ1EA8H
>>362
ありがとうございます!
0368デフォルトの名無しさん
垢版 |
2021/09/01(水) 21:55:30.34ID:t7KCJs9B
なんだ、>>362でうまくいったのか
つまりエラーは変換先のファイルが存在しててffmpegでエラーが出たってことだったのか
俺はエラー内容が書かれてなかったんで他のことを考えてたよ
"あい うえお.mp4"とかパスに半角空白が無くて全角空白がある場合とかね
0371デフォルトの名無しさん
垢版 |
2021/09/01(水) 23:03:16.29ID:UTT/foLD
例えば、デスクトップにショートカットを作る。
コマンドプロンプトを起動して、Ruby スクリプト・a.rb を実行する

リンク先
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
(ただし、書き込めないので、間に@を入れました)

作業フォルダ
C:\Users\Owner\Desktop

例えば、a.rb 内では、以下のようにRubyスクリプト内で、
7zip を起動して、ドロップしたファイルのSHA256 ハッシュ値を求める

command = "C:/Program Files/7-Zip/7z.exe"
option = " h -scrcsha256 "

ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
res = `#{ '"' + command + '"' + option + '"' + full_path + '"' }` # コマンド実行

puts full_path + res + ( "-" * 20 )
end

(ARGV は配列で、そこにコマンドライン引数・ドロップしたファイルパスが渡ってくる)

それで、ショートカットに、複数のファイルをdrag&drop すると、
コマンドプロンプトが起動して、各ファイルのハッシュ値が求められる

ただし、空白入りの実行ファイルのパスの前後を、"〜" で囲む事で、
Program Files の空白文字も処理できるが、
ドロップしたファイルパスに空白文字があると、
パスの前後を、"〜" で囲んでも、エラーになって処理できない
0374371
垢版 |
2021/09/01(水) 23:21:55.11ID:UTT/foLD
ハッシュ値を求めるのは、単なる例え。
ffmpeg の代わりに使っただけ

Ruby スクリプト内で、別のプログラムを呼ぶと、
ドロップされたファイルパス内の空白文字で、はまると言うこと
0377371
垢版 |
2021/09/02(木) 11:56:43.51ID:SBJQlu/e
>>371
に書いたように、コマンドプロンプトから、Ruby スクリプトを起動する方法では、
ドロップしたファイルパスに空白文字があると、バグる

PowerShell から、Ruby スクリプトを起動する方法では、
ドロップした複数のファイルパスを渡す方法が分からない

結局、以下のように、Ruby スクリプトを直接起動する方法では、
空白文字でも、複数のファイルパスでも、バグらない

ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb

puts ARGV # ドロップした複数のファイルパスの配列

sleep # 出力したコマンドプロンプト画面を閉じないようにする
0378デフォルトの名無しさん
垢版 |
2021/09/02(木) 12:14:08.51ID:ctEO1PZh
既視感あると思ったら >>156 に同じようなのがあるね
書き方似てるし >>362 と同じ人なんだろうか
start の有無の違いはなんで?
0379デフォルトの名無しさん
垢版 |
2021/09/02(木) 12:46:43.02ID:6AISeI88
>>360
>>362
すみません、複数ファイルドロップしたら1つ目しかできませんでした!
あと、自分は全くプログラミングの勉強してなくて検索したものをツギハギでつくってるのでechoがどうとかよく分かってなかったです
echoをonにするとどうなんですか?
0381371
垢版 |
2021/09/02(木) 13:39:27.82ID:SBJQlu/e
Ruby では、>>377
に書いたように、起動引数・ARGV は配列で、
そこに、ドロップした複数のファイルパスが入ってくる

出力
C:\Users\Owner\Documents\x
C:\Users\Owner\Documents\あ.txt

フォルダx と、ファイル・あ.txt
0383デフォルトの名無しさん
垢版 |
2021/09/02(木) 14:17:42.40ID:D5kjhyGc
>>379
前の質問もそうだが、どうして現象を説明しないの?
俺らが君のPCの画面やファイルを眺められるわけないじゃん
エラーなら、入力した内容やファイル内容やどこまで実行されててどういう状態になってるとか書かないとわからんだろ
あと362なら先頭行を削除して実行すればpauseで終了時点の状態がわかるだろ
0384デフォルトの名無しさん
垢版 |
2021/09/02(木) 14:24:25.53ID:D5kjhyGc
あと一個とか言ったけど、以前エラーになったオペレーションだと正常になったけど
新たに別のケースが出てきたってことか?
それとも以前エラーになったものは試してないってことか?
即答でありがとうなんて書けばこっちは正常になったと勘違いするだろ
あと、エラー状態は>>368の場合に該当しなかったということでいいか?
0385デフォルトの名無しさん
垢版 |
2021/09/02(木) 15:55:55.97ID:e/2zM0cp
>>379
コピペったバッチはShiftJISで保存した?
ドラッグ&ドロップするファイルの上位ディレクトリの名前かファイル名に半角スペースを含めてもう一度試してみ
ファイルやパスにShiftJIS外の文字や記号を含んでいるなら削除
それでもダメだったらファイル類を「パスのコピー」してここに貼ってみな
0386デフォルトの名無しさん
垢版 |
2021/09/02(木) 19:03:44.33ID:lSTkj0Rg
>どうして現象を説明しないの?

馬鹿につきあって解答する馬鹿がいるからです
0389デフォルトの名無しさん
垢版 |
2021/09/03(金) 19:05:48.55ID:nhGnJ2O1
素直にコード貼るだけ全然優良でしょ
オレオレ用語使う、コード端折る、妙にプライドがある奴はマジで神経擦り減る
0392デフォルトの名無しさん
垢版 |
2021/09/05(日) 20:59:18.22ID:h9G3o9Tj
USBデバイス(マイク)の有効/無効を切り替えるバッチファイルを書いているんですが、
forループ内でファイルパスを展開してコマンドを実行する部分で躓いています。

()内での %DEVCON% (devcon.exeの絶対パス)の展開部分ですが
''や、usebackqを使用して``とすると、にすると半角スペースごとに別文字列として展開される
``にすると絶対パスの先頭に`が付いたパスとして認識され、ファイルが見つからないエラーになる

forループの()内で変数を展開してコマンドを実行する方法が分かりません。
以下が作成したファイルの内容です。ご教示お願いします。

@echo off

:: devcon.exeのパス(64bit)
@set DEVCON="C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe"

:: マイクの無効と有効
:: AT2020USB+
:: %DEVCON% disable "USB\VID_0909&PID_001C&REV_0100&MI_00"
:: %DEVCON% enable "USB\VID_0909&PID_001C&REV_0100&MI_00"

FOR /F "tokens=3 usebackq" %%a IN (`%DEVCON% status "USB\VID_0909&PID_001C&REV_0100&MI_00" ^| find "Driver is"`) do set "STATUS=%%a"

IF "%STATUS%" == "running." (
%DEVCON% "USB\VID_0909&PID_001C&REV_0100&MI_00"
) ELSE (
%DEVCON% enable "USB\VID_0909&PID_001C&REV_0100&MI_00"
)
0393392
垢版 |
2021/09/05(日) 21:01:57.75ID:h9G3o9Tj
抜けがありました

14 %DEVCON% "USB\VID_0909&PID_001C&REV_0100&MI_00"
14 %DEVCON% disable "USB\VID_0909&PID_001C&REV_0100&MI_00"
0394デフォルトの名無しさん
垢版 |
2021/09/05(日) 21:50:58.36ID:qFDUcsKU
カレントフォルダをC:\Program Files (x86)\Windows Kits\10\Tools\x64 に移動してから
set DEVCON="devcon.exe" にしてみるとか
0395デフォルトの名無しさん
垢版 |
2021/09/05(日) 22:12:50.15ID:GdXH1yQe
>>392
FOR /F "tokens=3" %%a IN ('^"%DEVCON% status "USB\VID_0909&PID_001C&REV_0100&MI_00" ^| find "Driver is"^"') DO set "STATUS=%%a"
0397デフォルトの名無しさん
垢版 |
2021/09/05(日) 23:48:28.37ID:UFxCuC9Y
漏れは、ショートカットにDrag and Drop してみた結果、
結論として、コマンドプロンプトでは、ファイルパス中の半角空白を処理できない

PowerShell(PS)でも難しいかも

漏れは結局、Ruby を使っている

特に、コマンドプロンプトだけはやめて、PSを使った方が、マシかも
0400392
垢版 |
2021/09/06(月) 02:00:45.36ID:y69jRxqh
>>395-396
ありがとうございます!できました
0402デフォルトの名無しさん
垢版 |
2021/09/17(金) 15:37:36.70ID:gyqQtjrG
質問です。
メモ帳に「移動元のファイルの場所 移動先のファイルの場所」が絶対パスで半角スペースで区切られています。
これを読み込み指示通りにファイルを移動させたいのですがどのように書くといいでしょうか?
また、リネームする必要があるファイルもあるのですがどうするといいでしょうか?
「C:\aa\bb.jpg D:\aa\cc.jpg」
0404デフォルトの名無しさん
垢版 |
2021/09/17(金) 22:37:54.43ID:vaLPoEyz
「for バッチファイル」でググって訳がわからないようなら 、適当なエディタで開いて、" でくくるのを前提に
行頭、スペースとドライブ文字、行末、を置換してbatファイルとして名前を付けて保存

move "C:\aa\bb.jpg" "D:\aa\cc.jpg"

みたいになるように

なを、ファイル名にsjisじゃない何かが無い前提
0405デフォルトの名無しさん
垢版 |
2021/09/17(金) 23:29:19.93ID:O1PoA15N
バッチは、ややこしい。
Power Shell, Ruby などでやれば?

それに、そのファイルは半角空白で区切っているけど、
Windows では、ファイルパスに半角空白も入るから、バグるので、

普通に、CSV 形式にすると良い。
その代わり、CSVパーサーが必要になるけど

タブ区切りのTSV も良い。
さすがにタブ文字・改行コードは、ファイルパスには入らないだろうから、簡単に取り出せる
0406デフォルトの名無しさん
垢版 |
2021/09/18(土) 00:13:27.23ID:q5iJ5tLu
for /f "tokens=1* delims= " %%a in (List.txt) do (
set ERR=
if not exist "%%~a" set /a ERR+=2
if exist "%%~b" set /a ERR+=1
if not defined ERR (move "%%~a" "%%~b") else call echo ERROR:%%ERR%% "%%~a" "%%~b">>errlog.txt
)
pause
0408デフォルトの名無しさん
垢版 |
2021/09/18(土) 06:34:39.03ID:KTV+OCDB
移動先フォルダがないとmdで作成してやらんとエラーになるし
移動先に同名の既存ファイルがあるかも知れないし
0409デフォルトの名無しさん
垢版 |
2021/09/18(土) 07:21:16.02ID:ALBIVGfh
いちいち横からイチャモン言う間あったらおまえがサクッと書いて貼れば済む話
ksの典型
>>402 が言ってもないことまで至れり尽くせりしてやる必要ねーだろ
0410デフォルトの名無しさん
垢版 |
2021/09/18(土) 08:54:34.49ID:d7JASW2c
>>402です。
うまくできました。
半角スペースや日本語などは使われていませんでした。
分からないところはググりながらやってみます。
ありがとうございました。
0411デフォルトの名無しさん
垢版 |
2021/09/18(土) 11:01:52.40ID:7qS0Ehxx
書き捨てにするようなコードを「かも知れない」で必要以上無駄に肥大化させるのはゴミ屋敷住人と同じ愚かな思考
0412デフォルトの名無しさん
垢版 |
2021/09/18(土) 12:50:48.70ID:1ehO0L4U
世の中にはプログラムすること自体が好きな人がいるんだよ
誰もが間違いなくその恩恵にあずかっているのに小馬鹿にするやつは
自分への軽蔑の視線に気付かない愚か者だ
0415デフォルトの名無しさん
垢版 |
2021/09/18(土) 21:22:43.49ID:gRgRQYIa
別にこのスレでも書いてれば気にもとめないけどね
ただ今回はコードも貼らずに注文だけ言ってたからカチンとくる奴もいるだろうさ
0416デフォルトの名無しさん
垢版 |
2021/09/19(日) 03:42:58.81ID:uWgOxiqk
つまり自分は書けないクセに「プログラムすること自体が好きな人」とやらにネタを提供してやってるんだと
そして自分のお陰で皆が恩恵に預かれるのだから自分は良い行いをしているんだと言いたいワケか
おいおい何様だよw
0419デフォルトの名無しさん
垢版 |
2021/09/19(日) 12:51:30.97ID:/yxUr6Cy
rm -f /
だよって教えればいい
0420392
垢版 |
2021/09/20(月) 00:58:53.63ID:we+8yYct
-rfじゃないとほとんど何も消えないでしょ
0421デフォルトの名無しさん
垢版 |
2021/09/22(水) 13:43:55.48ID:KUdKcr1X
今時バッチなんて書いてるのは物好きです
おれは物好き
バッドノウハウ大好きだ♥
0422デフォルトの名無しさん
垢版 |
2021/09/22(水) 15:39:53.65ID:oingLDSY
バッチの利点
バッチ自体はウィルスにやられない
みんな違うから狙われにくい
0423デフォルトの名無しさん
垢版 |
2021/09/22(水) 18:39:59.79ID:1Sr76Ukf
ウイルスは知らんがランサムウェアで暗号化されてナイナイはされるんじゃね?
0424デフォルトの名無しさん
垢版 |
2021/09/22(水) 19:49:34.87ID:HbYg107O
これでバッチつくればいいぉw

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
0432デフォルトの名無しさん
垢版 |
2021/10/13(水) 18:48:57.34ID:HAnV1WZK
しつれいしました。
fo do型式の構文を書いたらerrorになってしまう・・・
0434デフォルトの名無しさん
垢版 |
2021/10/13(水) 18:51:20.12ID:mAb+BQMQ
for /?

これ以上の説明は掲示板では不可能だからな
0435デフォルトの名無しさん
垢版 |
2021/10/13(水) 20:37:11.25ID:wdMk643f
ここはコマンドインジェクション対策が入ってるからコード載せたいならgistとかに上げてそのURL貼ったほうが良い
0438デフォルトの名無しさん
垢版 |
2021/10/14(木) 02:43:30.00ID:TuHqoxKX
set /a a=b=c=0
こんな風にまとめて初期化出来るのは知ってたけど
set /a "c=(b=(a=400>>2)/25)>>2, a-b+c"
こんな書き方が出来る事に今更ながら気付いた
0441デフォルトの名無しさん
垢版 |
2021/10/15(金) 22:55:44.35ID:NLG7IfQt
書込みテスト

C:\>certutil -f -encode in.bat in.b64
C:\>certutil -f -decode in.b64 out.bat
C:\>type in.b64
-----BEGIN CERTIFICATE-----
ZWNobyBoZWxsbyB3b3JsZA0K
-----END CERTIFICATE-----

C:\>
0443デフォルトの名無しさん
垢版 |
2021/10/17(日) 17:19:52.54ID:R7AYOhq0
データだけのやつ
C:\>certutil -f -encodehex in.bat in.b64 1
C:\>certutil -f -decodehex in.b64 out.bat 1
C:\>type in.b64
ZWNobyBoZWxsbyB3b3JsZA0K

コマンド文の最後の1を4とか12にすると16進数
0446デフォルトの名無しさん
垢版 |
2021/10/21(木) 01:56:17.90ID:3qM4VvHD
ダブルクリックで実行した時は最後にpauseしたいけどcmd.exeからコマンド打って実行した時はpauseを省きたい
ダブルクリックはショトカから実行するようにしてショトカに目印の引数を付けておくというのは思い付いたんだけど
それ以外、バッチ自身に判定させる方法ってありますか?
0447デフォルトの名無しさん
垢版 |
2021/10/21(木) 02:36:48.27ID:/W0Foxxl
>>446
起動時の引数をそのまま参照する非公式変数を見るとかで判別できるんじゃないかな
%cmdcmdline%
0448デフォルトの名無しさん
垢版 |
2021/10/21(木) 02:55:46.15ID:/W0Foxxl
記憶違いだった
cmd.exeを起動したオリジナルコマンドラインだ
それに非公式でもない
0450デフォルトの名無しさん
垢版 |
2021/10/21(木) 03:54:49.34ID:3qM4VvHD
>>447-449
うひょw聞いて見るものですね。マジ感謝!
%cmdcmdline:~1,1%でセットせずとも行けるっぽいです
ありがとうございました
0451デフォルトの名無しさん
垢版 |
2021/10/21(木) 04:07:05.64ID:lVKoKJNl
>>450
%cmdcmdline:~1,1%
それやると、それ以降%cmdcmdline%の値が何故か変わるぞ
それ以降に%cmdcmdline%を参照しないなら問題ないがね
0452デフォルトの名無しさん
垢版 |
2021/10/21(木) 04:29:14.76ID:3qM4VvHD
>>451
謎な挙動しますね
echo %cmdcmdline%
として見てcmdから実行すると二度目の実行時に C となって3度目は echoはオフです となりました
if /i not "%cmdcmdline:~1.1%"=="c"
とする度にまるで
set "cmdcmdline=%cmdcmdline:~1.1%"
としてるかのような
こうならない為にわざわざ一旦setしてたんですね
なるほどです
0454デフォルトの名無しさん
垢版 |
2021/10/23(土) 20:34:55.19ID:ChfdQawL
自分を起動した親プロセスを特定すればいいのでは
ダブルクリックならexporer.exeになるはずだしcmd。exeならcmd。exe…なのか?
0455デフォルトの名無しさん
垢版 |
2021/10/24(日) 03:28:13.19ID:3uu+VZsn
変数が壊れてもいいなら>>453でいいやろ。ただしsetlocalはいらん。
このif条件式だとcmd画面の2度目でも失敗しない。環境によるけど。
別変数に代入してもいいが中に&等の文字あるとエラーでこける。
0459デフォルトの名無しさん
垢版 |
2021/10/29(金) 21:51:58.64ID:PNXAVzCe
windowsで半角空白や&付ファイル名が許可されてるんだから
バッチファイルにD&Dやsendtoした時の
半角空白とか&の扱いはWindows側で何とかして欲しいなと思う。
0462デフォルトの名無しさん
垢版 |
2021/10/30(土) 01:01:41.85ID:ZgBEU8E6
&はわざとそういう仕様にしたんだろうけど全角空白については、んなもん知るか。なんだと思う
コマンド類もANSIしか想定してないし
日本語ヘルプの間違いを正さないのも、敢えて、だろうね
毛唐共は底意地悪いというか強く出ないと何もしない
大人しくしてるととことん図に乗りナメくさる
欠陥あっても買ってくれて文句も言わず泣き寝入りしてくれるチョロい鴨としか思ってない
0465デフォルトの名無しさん
垢版 |
2021/10/31(日) 00:05:13.37ID:VJFi2hrE
>>464 引用符付引数表示バッチ(D&D,sendto用),拡張子はbat

@echo off & set a="%cmdcmdline:"=" "%"
for %%i in (%a:*t"=%) do if not %%i=="" set b=%%i& call :x
pause & exit
:x
if "%b:~1,1%"==" " set b=%b: =" "%
for %%j in (%b%) do if not %%j=="" echo %%j
0466デフォルトの名無しさん
垢版 |
2021/10/31(日) 15:03:24.36ID:6z99IB+f
自分も結局cmdcmdline読んで置換して置換して
最後のファイルパス部分だけ""で囲みなおすとかいう技で何とかした。

けど空白&付ファイルを管理者権限オプション付けたショートカットにsendtoしたら
””の付き方の関係でコマンドエラーになってそもそも
バッチファイルすら動かせないのはどうしようもなかった。
0467デフォルトの名無しさん
垢版 |
2021/10/31(日) 16:14:17.42ID:C3Zqy8ME
普通のファイル名に&を使うのがバカ
&使うのはトリッキーな動作させる時だけ
0468デフォルトの名無しさん
垢版 |
2021/10/31(日) 16:59:09.50ID:VJFi2hrE
>>466
管理者権限ではダメだね
起動しないのでバッチを弄っても意味がない
べつに & が無くても半角空白だけでもダメ
pauseだけのバッチでも起動しない
0469デフォルトの名無しさん
垢版 |
2021/11/01(月) 06:54:23.99ID:jadZUHdf
引数を取得してからショートカットにまわせばいいんじゃね
start kanri.lnk 引数
0472デフォルトの名無しさん
垢版 |
2021/11/01(月) 12:50:11.96ID:QjI9xm4a
自分が使うバッチにファイル群なら運用回避で何とでもなるんだけど
会社の共有フォルダとかだとなんて皆使えるように使うしどうしてもな。
まあどうしようも無ければ最後はルール化して
半角全角空白記号周りのファイル名をリネームするツール回すのみだな。
0474デフォルトの名無しさん
垢版 |
2021/11/03(水) 10:25:06.03ID:/m7gndnZ
>>466
1.バッチのショートカットを作成
2.「管理者として実行」に設定
3.リンク先の先頭にcmd /c を追加する
適用したらcmdはフルパスに変換される
これで動作するはず
管理者権限が不要ならcmd /c も不要
というかバッチに直接D&D,sendtoでもOK
0475デフォルトの名無しさん
垢版 |
2021/11/03(水) 12:58:10.31ID:/m7gndnZ
>>474は一般的な話だが

>>465の場合の管理者権限ショートカットは
リンク先はバッチファイル名を引用符で囲む必要あり
cmd /c c:"\hoge.bat"
最初の引用符の位置に注意
バッチの中で t" を参照してるので消えないようにするため
0476デフォルトの名無しさん
垢版 |
2021/11/03(水) 20:10:42.41ID:/m7gndnZ
>>474-475
こんな面倒なことする必要ないわ
バッチのフルパスに半角スペースがあればいいのか
管理者権限にするだけだな
0478デフォルトの名無しさん
垢版 |
2021/11/06(土) 21:15:51.20ID:INMdaaG1
set j=.body.playback
for /f "usebackq" %%a in (`curl %h%^|jq -r %j%.video_link[-1].url`)do set m=%%a
for /f "usebackq" %%a in (`curl %h%^|jq -r %j%.title`)do set t=%%a

2回もJSONに参照するのが嫌だから、1回で格納したいんだけどforを1回で回して2つ格納って出来ます?
0479デフォルトの名無しさん
垢版 |
2021/11/07(日) 00:37:39.03ID:U3IH/L/8
>>478
ちょっとjqを調べてみたら、いくつか使える候補が見つかった
batで使いやすいのは結果が1行で出力されるもの \(),join(""),@csv
for文で、\()とjoinは任意の区切り記号、csvは区切り記号として[,]の3つを指定する
また複数行の出力場合は擬似配列変数に代入するとかでできる

【例】
長いので、入力が{"a":{"b":"foo","c":"bar","d":"baz"}}とした場合 (※.a.bは.a|.bでも良い)
1) \()
for /f "usebackq tokens=1-2 delims=," %%i in (`curl 〜^|jq -r ".a|""\(.b),\(.d)"""`) do (
set m=%%i
set t=%%j
)
2) join("")
for /f "usebackq tokens=1-2 delims=," %%i in (`curl 〜^|jq -r "[.a.b,.a.d]|join("""","""")"`) do (

3) ,での出力
setlocal EnableDelayedExpansion
set n=0
for /f "usebackq tokens=*" %%i in (`curl〜^|jq -r ".a.b,.a.d"`) do (
set d!n!=%%i
set /a n+=1
)
echo;%d0%
echo;%d1%
endlocal
0480デフォルトの名無しさん
垢版 |
2021/11/07(日) 01:01:53.46ID:U3IH/L/8
4) @csv
for /f "usebackq tokens=1-2 delims=," %%i in (`type test.json^|jq -r ".a|[.b,.d]|@csv"`) do (
set m=%%~i
set t=%%~j
)

あ、-cというのも見つけた
5) -cで配列を出力
for /f "usebackq tokens=1-2 delims=[,]" %%i in (`type test.json^|jq -c ".a|[.b,.d]"`) do (
set m=%%~i
set t=%%~j
)
0481デフォルトの名無しさん
垢版 |
2021/11/07(日) 01:58:35.64ID:DID0sM5T
for /f "tokens=1-2 delims=," %%a in ('curl %h%^|jq %j%.video_link[-1].url,%j%.title') do set "m=%%~a"&set t=%%~b
みたいな感じで
jqの方よく分かって無いけど、カンマ区切りで両方の要素フィルタリングしてforでトークンとカンマをデリミタ指定してやれば行けそう
だけど要素にカンマが含まれてたら失敗するかも
次案
for /f "delims=" %%a in ('curl %h%') do (
 for /f "usebackq" %%b in (`echo %%a^|jq -r %j%.video_link[-1].url`)do set m=%%b
 for /f "usebackq" %%c in (`echo %%a^|jq -r %j%.title`)do set t=%%c
)
0482デフォルトの名無しさん
垢版 |
2021/11/08(月) 16:25:54.29ID:Px/K8tF9
moveで移動するときに
指定したフォルダがないときに自動で作るとかできんの?
0483デフォルトの名無しさん
垢版 |
2021/11/08(月) 17:08:44.21ID:Wv1BXJs6
存在しないとリネーム
存在するとその下に移動
結果が全く違う
エラーも出ない
確認もない
たちの悪い仕様
0485デフォルトの名無しさん
垢版 |
2021/11/08(月) 22:36:27.76ID:z+jTzavH
>>484
どういうふうにダメなの
カンマが文字列に入ってたのなら区切り文字列を別の使われてないものにすればいけると思うけど
また3)でもいけるはずだが
0486デフォルトの名無しさん
垢版 |
2021/11/08(月) 22:40:00.92ID:z+jTzavH
ただ、常にダブルクォーテションで括ってやって、外さないように制御したほうがいいよ
urlによく付いてくるクエリーとかだとパラメータを&で区切って書くので
""を外すと何かとやりにくいはず
0488デフォルトの名無しさん
垢版 |
2021/11/08(月) 22:59:09.33ID:Ev0WzRyD
すまぬ、「またまたー」と思いながらやり直したら普通に動きましたw
一応、>>479-480の例1と5で試したらしっかり動きましたw
0489デフォルトの名無しさん
垢版 |
2021/11/09(火) 00:35:07.87ID:QL8KoTXD
>>488
5)は区切り文字が3つもあって、どれかがurlのクエリーに使われるかもしれない
またtokens=1-2はtokens=1*にすれば2つ目(.title)にはカンマがあっても大丈夫になる

で、一番いいと思うものが区切り文字としてTABを使うもの
(まず、urlやtitleにTABコードは使わないだろう)
6) @tsv
for /f "delims=N" %%I in ('cmd /u /c echo 三') do set TAB=%%I
for /f "usebackq tokens=1* delims=%TAB%" %%i in (`type test.json^|jq -r ".a|[.b,.d]|@tsv"`) do (
set x="%%i"
set y="%%j"
)
0490デフォルトの名無しさん
垢版 |
2021/11/09(火) 19:41:28.06ID:5mYjFh+F
バッチファイルでコマンドプロンプトを起動して
C:\>hoge
というふうに「hoge」が入力された状態にしたいんですけどどうすればいいでしょうか

cmd /k の後がわかりません・・
0491デフォルトの名無しさん
垢版 |
2021/11/09(火) 20:43:47.12ID:pDzmJqw9
@cmd.exe /k "prompt C:\$Ghoge"

「入力された状態」はahkとか使わないと無理じゃないかな
0492デフォルトの名無しさん
垢版 |
2021/11/10(水) 01:27:11.48ID:faifycsG
定型入力を省略したいってだけなら別の方法があるけど
rem hogeの後に続く文字列を入力させる
set /p REMAIN_STR="hoge"
rem hogeと結合する
set COMPLETE_STR=hoge%REMAIN_STR%
rem 完全な文字列を表示する
echo %COMPLETE_STR%
0494デフォルトの名無しさん
垢版 |
2021/11/10(水) 02:56:31.36ID:eLi1lwzp
コマンドの入力が面倒ってだけなら
doskeyで適当なエイリアスを設定するだけでも十分な気が
0495デフォルトの名無しさん
垢版 |
2021/11/10(水) 07:20:19.97ID:v4FfRZjw
あるデバイスが抜いてさし直さないと読み込めません
コマンドプロンプトで刺してある状態を解除して読み込め直すことは出来ないですか?
0497デフォルトの名無しさん
垢版 |
2021/11/20(土) 17:53:21.19ID:KiGzNUkt
質問です。
やりたいことは
「エクスプローラーで選択したフォルダをショートカットキーを使って指定したフォルダに移動」
です。
BATファイルがショートカットキーで使えるようなので
これをなんとか使えないか調べたのですがわかりませんでした。
私のやりたいことは可能でしょうか?
0498デフォルトの名無しさん
垢版 |
2021/11/20(土) 21:04:55.50ID:mzO+cRkE
>>497
>BATファイルがショートカットキーで使えるようなので

そこの情報源に当たればいいじゃん
0499デフォルトの名無しさん
垢版 |
2021/11/20(土) 23:01:39.27ID:785tmrzC
バッチ(コマンド)だけでは無理
VBか何かで「エクスプローラーで選択」のアイテムのパスを取得出来れば可能
この辺で聞いてみたら?
VB.NET質問スレ(Part44)
http://mevius.2ch.net/test/read.cgi/tech/1527325729/
【VBScript】WSHについて話し合うスレ【JScript】
http://mevius.2ch.net/test/read.cgi/tech/1578522041/

素直に選択して右クリで「送る」するならバッチでも出来る、がCtrl+X,Ctrl+Vと手間は大して変わらん
どうしてもショートカットキーワンアクションでってならエクスプローラー諦めてそれが出来そうなファイラー探す方が早い
0500デフォルトの名無しさん
垢版 |
2021/11/21(日) 14:03:31.46ID:/SaMuAE1
OSに現在誰がログインしてるかSYSTEM権限のタスクのバッチから取得したいと考えてます。
ログイン中のユーザー自体はquery userコマンドで拾えることが判ったのですが、
他にもっと適当なコマンドがあったら教えてください。
0503デフォルトの名無しさん
垢版 |
2021/11/21(日) 16:48:36.14ID:h4R7LYQM
usernameってローカルログオンしてるユーザーだけじゃななかったっけな?
system権限のbatっていうのが何なのか曖昧だけど
アカウントユーザー名のSYSTEMのことだったらダメなんじゃないか?
0504デフォルトの名無しさん
垢版 |
2021/11/21(日) 16:54:31.46ID:h4R7LYQM
あと結果をecho表示させようとしてもSYSTEMからユーザーの画面に表示はされないので注意(ウィンドウが表示されない)
0505デフォルトの名無しさん
垢版 |
2021/11/21(日) 16:57:22.70ID:h4R7LYQM
念のためechoだけじゃなくNotepad等アプリ起動してもユーザー画面には現れないということ
0506デフォルトの名無しさん
垢版 |
2021/11/21(日) 17:20:15.98ID:h4R7LYQM
スタンドアローンPC(普通の人の環境)で試してみた
%username% → PC名$
query user → 誰かがログインしてれば、ログインしてるローカルユーザー1人のみ
サーバーだとおそらくユーザー全員のリストが出るのかな?
0509デフォルトの名無しさん
垢版 |
2021/11/22(月) 19:01:18.96ID:YF/SUs6n
whoamiコマンドの結果では、systemが表示される
ダメってことだが一応報告まで
0512デフォルトの名無しさん
垢版 |
2021/11/23(火) 18:33:43.80ID:tf0m1Q47
Driver Booster というアプリがあります。これを (バージョンに関わらず) バッチファイルから起動したいと思います。
このアプリは C:\Program Files (x86)\IObit\Driver Booster\(バージョン番号)\DriverBooster.exe が実行ファイルです。
この (バージョン番号) 部分によらず起動するために、実行ファイル DriverBooster.exe を検索して起動しようと
以下バッチファイルを書いてみましたが、肝心のファイル検索がうまく行きません。どうしたらよいでしょうか

cd /d "C:\Program Files (x86)\IObit\Driver Booster"
for /f "delims=: tokens=1" %%i in ('where /r "C:\Program Files (x86)\IObit\Driver Booster" DriverBooster.exe') do set p=%%i
echo %p% <-- いずれ start "" /b "%p%" にする予定
pause
0513デフォルトの名無しさん
垢版 |
2021/11/23(火) 19:09:58.73ID:/gWgBLyu
pushd "C:\Program Files (x86)\IObit\Driver Booster"
set p=
for /f "delims=" %%a in ('dir /b /s DriverBooster.exe 2^>nul') do set "p=%%~a"
if defined p (echo start "" /b "%p%"
) else ( echo File Not found.
pause
0517デフォルトの名無しさん
垢版 |
2021/11/23(火) 23:38:49.10ID:7Kq301Hb
そういや
音って鳴らせないの?
特定の処理を終了したら
終了音ならしたいんだけど
0524デフォルトの名無しさん
垢版 |
2021/11/24(水) 15:01:27.44ID:uH6oNI9g
すみません、質問です。

call :hoge hogehoge.py

:hoge
python -B %1
robocopy foge
del piyo
exit /b

は、
hogehoge.pyに:hoge を追加したものを実行しているという意味合いで合っていますでしょうか。

お手数おかけして恐縮ですが、教えていただければ幸いです。
0525デフォルトの名無しさん
垢版 |
2021/11/24(水) 15:29:52.68ID:L2nveBoL
call は ":hoge" というサブルーチンを "hogehoge.py" を引数として呼んでいる
サブルーチン":hoge "は :hoge から exit /b まで
「python -B %1」の%1は :hoge の第1引数、つまり "hogehoge.py"
":hoge"サブルーチン内で 「 python -B hogehoge.py 」と実行している

バッチ内に @echo off とあるのなら、@echo on と書き換えて実行すれば
コマンド類がどういう順、変数展開されて実行されているか見えるようになる
0526デフォルトの名無しさん
垢版 |
2021/11/24(水) 15:51:35.42ID:uH6oNI9g
>>525
ご教授いただきありがとうございます。
とてもわかりやすく、助かりました!
0527デフォルトの名無しさん
垢版 |
2021/11/24(水) 16:06:45.19ID:xEc1Gd+0
call hoge
 hoge.batを呼び出す
 call hoge.batと書いたほうが間違いが少ない
call :hoge
 現在のbatファイル中のラベル:hogeを呼び出す
 (サブルーチンのような感じであり、呼び出すbatファイルを別に用意しなくても済む)
0528デフォルトの名無しさん
垢版 |
2021/11/28(日) 21:32:31.71ID:/OsOh/FW
explorerから.batをクリックした時
Windows Terminalで開く設定ってどうやるの?
ショートカット作ってプロパティ設定すると
非レガシーコンソールの設定もあるけどウィンドウが透明になって^vできるだけという
0529デフォルトの名無しさん
垢版 |
2021/11/29(月) 14:11:09.39ID:lBCR2YeY
ショートカットを以下みたいにして出来ない?
wt new-tab --title "CMD" cmd.exe /k \"フルパス\hoge.bat\"
0530デフォルトの名無しさん
垢版 |
2021/12/01(水) 12:20:54.06ID:+U/ofie/
日付の計算ってvbsやパワーシェル呼び出すしかないの?

ファイル名yyyymmの今月分がなかったら先月分をリネームコピーしたいだけなんだが
0531デフォルトの名無しさん
垢版 |
2021/12/01(水) 12:52:49.40ID:jrr/ct9i
SETLOCAL ENABLEDELAYEDEXPANSION
SET TODAY=%DATE%
SET YY=%TODAY:~0,4%
SET MM=%TODAY:~5,2%

IF "%MM%"=="01" (
SET /A YY=%YY%-1
SET LASTMM=!YY!12
) ELSE (
SET /A MM=%MM%-1
SET MM=0!MM!
SET LASTMM=%YY%!MM:~-2!
)
ECHO %LASTMM%
0532デフォルトの名無しさん
垢版 |
2021/12/01(水) 13:11:55.23ID:eX2WGo0j
> 今月分がなかったら先月分をリネームコピーしたいだけ
これにどう日付計算が必要なの?そもそも日付計算くらい自前で計算出来るでしょ
今月が1月の時だけ前年の12月にするくらいだね。ifで判別すればいいだけだから計算は1月の時に"年-1"するだけ

今月の取得
set Y=%date:~0,4%
set M=%date:~5,2%
Mは頭ゼロになる
12パターンしか無いんだから if "%M%"=="01" から "%M%"=="12" までずらっと並べちまえばいい
バッチなんて頭悪い書き方(の方が|で)いいんだよ

タスクスケジューラで定期実行させるのか都度月1でダブルクリックか
先月のファイルが無い場合は?遡って順次処理?ファイル名形式に合う最後のファイルを今月に?
日付計算が必要で数値としての今月はこんな感じで取得出来る
for /f "tokens=1-3 delims=/" %%a in ("%date:~0,10%") do set /a "y=%%a, m=1%%b-100, d=1%%c-100"
UNIXTIMEもワンライナーで行ける
for /f "tokens=1-7 delims=/:. " %%a in ("%date:~0,10% %time: =0%") do set /a "y=%%a, m=1%%b-100, d=1%%c-100, h=1%%d-100, n=1%%e-100, s=1%%f-100, cs=1%%g, f=!(m/3), g=y-f, k=f*12+m-3, uTime=86400*(365*g+g/4-g/100+g/400+(306*k+4)/10+d-719469)+3600*h+60*n+s"
0533デフォルトの名無しさん
垢版 |
2021/12/01(水) 13:16:52.77ID:+U/ofie/
>>531
>>532
ありがとう
確かにバッチに時間かけるのもあれだな
0534デフォルトの名無しさん
垢版 |
2021/12/01(水) 13:53:25.27ID:eX2WGo0j
先月
for /f "tokens=1-2 delims=/" %%a in ("%date:~0,7%") do set /a "m=1%%b-101, f=!m, y=%%a-f, m=m*!f+12*f"
set m=0%m%
set m=%m:~-2%
echo %y%%m%
0535デフォルトの名無しさん
垢版 |
2021/12/01(水) 14:32:14.49ID:eX2WGo0j
set /a "m=101-101, f=!m, y=2022-f, m=m+12*f"
でいい
*!fはあっても問題無いけど余計だった
0536デフォルトの名無しさん
垢版 |
2021/12/01(水) 14:33:15.12ID:+U/ofie/
かなりシンプルになるな
0539デフォルトの名無しさん
垢版 |
2021/12/02(木) 12:24:38.70ID:xcTRUvQf
for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m=1%%b-101, f=!m, m+=12*f, y=%%a-f"
for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m=1%%b-101, m+=12*(f=!m), y=%%a-f"
for /f "tokens=1-2 delims=/" %%a in ("%DATE:~0,7%") do set /a "m+=12*(f=!(m=1%%b-101)), y=%%a-f"
少し直したけど綺麗だなこれ
>>532
unixtimeも面白い
3月を頭にしてるんだな
0540デフォルトの名無しさん
垢版 |
2021/12/02(木) 21:10:02.03ID:NUCi8UEu
0:00前後に実行するとおかしなことになるから%date%と%time%はかならず一時変数に入れるべき
もっと言えば日付と時刻を同時に取れる手段を使うべき
0542デフォルトの名無しさん
垢版 |
2021/12/02(木) 22:37:42.24ID:s/MRATw/
割とクソゴミな式な
式の意味が分かり難くなるような式変形しちゃダメだわ
敢えてやってんだろうけどさ
Wikipediaの解説とかも良く分かってないバカが書いたんだろうなと思う
まあ導出のアプローチの仕方が悪いってだけだが
0543デフォルトの名無しさん
垢版 |
2021/12/04(土) 22:30:00.94ID:Nf0n5MKs
日付の質問です。
CSVの日付部分のセルのデータが壊れていて、5桁の整数になっています。
ググって調べてみたら、どうも1899/12/30が0のシリアル値のようです。
これをYYYY/MM/DDの文字列に変換したいんですが計算式がわかりません。
よろしくお願いします。
0546デフォルトの名無しさん
垢版 |
2021/12/05(日) 06:43:24.27ID:KxbO9WQf
>>543 変数 n を変換
set /a n+=693899,a=365,b=1461,c=36524,e=146097
set /a f=n/e,g=(n+1)/e-f,n-=f,n+=(n-g)/c,f=n/b,g=(n+1)/b-f,n-=f
set /a n+=(n-g)/a*3+(n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a-306
set /a y=n/372+1,m=n/31%%12+101,d=n%%31+101
set n=%y%/%m:~1%/%d:~1%

各定数は順に、
0/3/1〜1899/12/29の日数(全てグレゴリオ暦)
西暦1年から1,4,100,400年の日数
3〜4,3〜6,3〜9,3〜11,3〜12月の日数
31*12の日数
0547デフォルトの名無しさん
垢版 |
2021/12/05(日) 09:15:29.34ID:/JnG12pN
> 1899/12/30が0のシリアル値
まあ実質的にはそれでも間違いでは無いけど
エクセルは一応 1900/01/01 が 1
でも 1900/02/29 が存在するバグ仕様のせいで 1900/03/01 以降 +1 になってしまい 1899/12/31 が 1 のような値になってしまう
1900/03/01 以降の値しか無いなら一律で構わないけれど全てに対応させるには以下の3種必要
・1900/01/01 〜 1900/02/28
・1900/02/29
・1900/03/01 〜
2/29だけ例外で扱って残りは03/01〜の時、通日をフラグで-1する感じかな
0/3/1 を 0 とした値に直して %1 に与えたら以下の式で年月日を出せる
set /a "R=(R4=(R1oo=(R4oo=%~1%%146097)%%36524)%%1461)%%365, Y4oo=%~1/146097, Y1oo=R4oo/36524, Y4=R1oo/1461, Y1=R4/365, L=(Y1oo|Y1)/4, R+=L*365, k=(R*5+2)/153, d=R+1-(306*k+4)/10, f=k/10, m=k+3-f*12, y=400*Y4oo+100*Y1oo+4*Y4+Y1-L+f"
echo %y% / %m% / %d%
0548デフォルトの名無しさん
垢版 |
2021/12/05(日) 09:29:31.66ID:KxbO9WQf
シリアル値が60以下がどうとかいう話だよね
質問が5桁の整数とあるので無視したよ
0550デフォルトの名無しさん
垢版 |
2021/12/05(日) 11:31:10.50ID:KxbO9WQf
そもそも60以下になるとソフトにより挙動が違う
Excelとは限らない
出どころ確認が先決
スレチの話だけどね
0552デフォルトの名無しさん
垢版 |
2021/12/05(日) 11:39:17.80ID:4iCsIwjm
わざわざ対応する必要なんて無いとは思うけど
定数の説明なんかよりも60以下で不正な値になるという注意書きの方が重要だわな
みずほも言われたことしかやらない企業体質がどうの言われてるね
こんな感じで小さなバグが内包しまくってるのかもなw
0553デフォルトの名無しさん
垢版 |
2021/12/06(月) 16:06:42.92ID:yBc7foB1
>>546
一旦閏日全部引いて、月が一律31日になるよう加算してるんだね
面白い
(n-61)/a+(n-122)/a+(n-214)/a+(n-275)/a
この式が4-11月の不足分を足してるんだろうけど
なんでこの式で行けるのかイメージ出来ない
0554デフォルトの名無しさん
垢版 |
2021/12/06(月) 19:19:45.42ID:+EfoGYZX
>>546
バッチありがとうございます。動作確認しました。助かりました。
>>550
ソフトはLibreOfficeです。後出しですみません。
シリアル値は全て連続です。質問は5桁設定でしたが60以下でもOKです。
>>547
詳細な情報ありがとうございます。Excelの場合は注意します。
0555デフォルトの名無しさん
垢版 |
2021/12/07(火) 18:18:33.97ID:gm0ARZfd
すみません、質問です。

SET hoge=hogehoge
robocopy c:\piyo \\server1\foge %hoge% /r:3 & if errorlevel 8 (
echoコマンド
exit /b 1
)

上記、
robocopy c:\piyo \\server1\foge %hoge%の「%hoge%」はどのような意味合いになりますでしょうか。
また、/r:3 & if errorlevel 8 ( の意味合いも教えていただけないでしょうか。

恐縮ですが、よろしくお願いいたします。
0557デフォルトの名無しさん
垢版 |
2021/12/07(火) 18:52:54.40ID:eGbAaLSQ
なお&は命令の区切りだけど、別に手前の命令の結果を待っての動作じゃなくて
一行前までの結果で動作するんじゃなかったかな
0558デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:03:57.81ID:8LJtCh3/
&はコマンドを繋げているだけ
その例だと
robocopy opt
if errorlevel 8 echoコマンド&exit /b 1
と同じ
c:\piyo \\server1\foge %hoge% /r:3
がrobocopyのコマンドラインオプション
%hoge%はhogehoge
set a=xyz
echo %a%
はecho xyzと解釈されxyzと出力される
各コマンドについてはコマンドプロンプトで以下
set /?
robocopy /?
if /?
0559デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:21:14.44ID:eGbAaLSQ
>>558
>>557でも言ったけど、&は命令を並列に記述できるだけで
前の命令の結果を反映したものじゃないので
robocopy opt
if errorlevel 8 echoコマンド&exit /b 1

robocopy opt&if errorlevel 8 echoコマンド&exit /b 1
の結果は違ってくる
っていうかこれは意味の無い間違った使い方だね


set data=abc
set data=def&echo %data%
echo %data%

実行結果
abc
def
0561デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:34:45.64ID:8LJtCh3/
>>559
pushd .
if errorlevel 1 echo fail1
pushd a
if errorlevel 1 echo fail2
pushd .&if errorlevel 1 echo fail3
pushd a&if errorlevel 1 echo fail4
pause
試してから発言しなよ
0562デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:38:07.87ID:eGbAaLSQ
実行時の行の展開の式評価に環境変数は展開されるってことだな
式評価に影響されないものはちゃんと実行される
&による命令の結合は
if errorlevel 1 は問題ないが
if %errorlevel% geq 1は問題がでてくる
0563デフォルトの名無しさん
垢版 |
2021/12/07(火) 20:35:38.31ID:FGGdMnHs
皆さまありがとうございます

cmdにて コマンド /? で見られること知りませんでした
0569デフォルトの名無しさん
垢版 |
2021/12/09(木) 10:08:38.60ID:FBbu4srV
次行に書いた方が見やすいしわざわざ&で繋ぐ意味なんてほぼ無いけど
robocopy & if errorlevel
としてるのは if errorlevel は直前のコマンドの errorlevel を評価するわけだから
「ココは直後である事に意味ありますよ。繋がっていますよ」をコード的に明示する為に次行では無く&で繋げて書いてあるんだと思う
0571デフォルトの名無しさん
垢版 |
2021/12/09(木) 14:06:23.73ID:7XWC/XYC
行数を少なくしたい時しか使わんかなあ
まあ使うとしても
エラーかどうかだけチェックするときは、&&,||を使うといい
0572デフォルトの名無しさん
垢版 |
2021/12/09(木) 15:08:39.73ID:CZcGE7T9
>>571
> エラーかどうかだけチェックするときは、&&,||を使うといい

なるほど、一行でみやすくなる
0573デフォルトの名無しさん
垢版 |
2021/12/09(木) 15:58:31.58ID:y36UsJ/D
type "!TARGET_FILE!">>"!FILE_NAME!"で
テキストの中身を出力して
テキストファイルに出力するバッチファイルつくったんですけど
普段はうまく出力できたんですが

特定のファイルだけ
The system cannot find the file specified.
で中身が空になってしまいました

原因として考えられるのはなんでしょうか?
0574デフォルトの名無しさん
垢版 |
2021/12/09(木) 15:59:20.44ID:y36UsJ/D
中身が空というのは
本来は出力されるべきものが空になって出力された
ということです
わかりづらくてすいません
0576デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:23:54.32ID:E/xxr9cU
Windows10で、Chromeで特定の複数Webページを開くバッチファイルを作りたいと思ってます

cd /d "PATH_TO_CHROME"
"PATH_TO_CHROME\chrome.exe" "http://〇〇/〇〇"
"PATH_TO_CHROME\chrome.exe" "http://△△/△△"

このようにすると指定したChromeが起動し、指定したURLを開けるところまでは
できたのですが、これだと起動したChromeのタブを閉じないとバッチファイルが
先まないので、1サイトずつ開くことしかできません

しかし
cd /d "PATH_TO_CHROME"
start "PATH_TO_CHROME\chrome.exe" "http://〇〇/〇〇"
start "PATH_TO_CHROME\chrome.exe" "http://△△/△△"

このようにすると、ChromeではなくIE(既定のブラウザ)で起動してしまいます

対処法をお教えいただけますでしょうか
0579デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:55:28.09ID:E/xxr9cU
>>577
ご指摘ありがとうございます
コマンドがタイトルとなっているようですね

>>578
うまくいかず、いろいろ試行錯誤して残っておりますが、たしかに必要ないですね
ご指摘ありがとうございます
0580デフォルトの名無しさん
垢版 |
2021/12/10(金) 11:16:20.09ID:E/xxr9cU
576です

いただいた回答に基づき以下の様に修正し、うまく動作しました
ありがとうございました

cd /d "PATH_TO_CHROME"
start "" chrome.exe "http://〇〇/〇〇"
start "" chrome.exe "http://△△/△△"

タイトルは、どうしようか迷いましたが、消すとまた忘れて罠にハマるかと思い、
残しておきました
0582デフォルトの名無しさん
垢版 |
2021/12/10(金) 13:46:43.89ID:xm+AV3Ci
これかー
https://github.com/MicrosoftDocs/windowsserverdocs/issues/4784

However the fact you need a Window Name is very annoying.

Typically we have used:
start /w "c:\path_name_here\filename.ext"
But all this does now is open another cmd prompt window with "c:\path_name_here\filename.ext" as it's title.

As a minimum, what is now required is this:
start "" /w "c:\path_name_here\filename.ext"

Why did this change??

まだopen question?闇深
0583デフォルトの名無しさん
垢版 |
2021/12/10(金) 13:58:58.96ID:bi0x6bK+
いちいちcdとかせんでもこれでよくね?
set chrome="フルパス\chrome.exe"
start "" %chrome% "http://〇〇/〇〇" "http://△△/△△"
タブに追加するだけならurlは羅列でいいはず
0584デフォルトの名無しさん
垢版 |
2021/12/10(金) 14:41:04.55ID:xm+AV3Ci
/オプション無しのオプショナル引数を先頭に持ってくるという設計は完全に腐ってるから、[<title>]から<title>への変更はグッジョブ

しかしアンドキュメンテッドはやめーや
0587デフォルトの名無しさん
垢版 |
2021/12/14(火) 01:14:44.64ID:74yCYCRP
>>567
行毎に一括でパラメタ展開はモジュール化に役立つよ
:: main
call :subtract %1 %2
call :add %1 %2
goto:eof

:subtract
setlocal
set a=%1
set b=%1
endlocal & set /a ret=%a%+%b%
exit /b

:: note that
:: "endlocal & set /a ret=a-b" wont work: no expansion at line-parsing
:: also
:: "endlocal"
:: "set /a a=%a%+%b%"
:: because local vars already popped.

:add
setlocal
set a=%1
set b=%2
endlocal & set /a ret=%a%-%b%
exit /b

ノーテストなんでなんか変だったらごめん
スマホアプリですぐ試せられればいいんだけど、プロプライエタリだからなあ…
0589デフォルトの名無しさん
垢版 |
2021/12/14(火) 13:12:42.88ID:0TpC/TXA
%time%で取得できる13:11:12.99を13111299に変換したい場合、変数を使って%time::=%、%_time:.=%として変換しています。
この文字列置換を複数条件設定するなど1行でスマートに置換させる方法はありませんか?
0594デフォルトの名無しさん
垢版 |
2021/12/15(水) 22:26:24.88ID:EYSEHsUE
>>593
そこまで気にするなら、時刻が 0:00:00.xxの時は日付を取得し直すとかすればいいかな
又は一旦ダミーファイルを作成してそのタイムスタンプを見るとか
ちょっと具体的には思いつかないが日付時刻の付いた結果が出るシステム情報や結果ログ出力系のコマンドから貰うとか
bat中で別言語(WSH,PowerShell)で取得するとか(new Date();やget-date)
どういうのを使うと良いと言ってくれれば最高なレスになったのに
0596デフォルトの名無しさん
垢版 |
2021/12/16(木) 21:17:59.55ID:/gSQ5d+p
これで満足かな
for /f "usebackq" %%a in (`powershell -nop "get-date -format 'yyyyMMddHHmmss'"`) do set now=%%a
0597デフォルトの名無しさん
垢版 |
2021/12/17(金) 14:42:24.69ID:BDVQn7Pa
:: タイムスタンプ取得。秒未満無し
copy nul $.txt
:: tokens はシステム設定の日付形式に依存。環境毎に要調整
for /f "tokens=2-4,6-8 delims=/: " %%a in ('where /t $.txt') do set "dt=%%a%%b%%c%%d%%e%%f"
del $.txt
set "dt=%dt: =0%"
echo %dt%
pause &exit /b

:: 怪しい時間帯(23:59:59-00:00:01)なら再取得。センチ秒(1/100)有り
:GET_DT
for /f "tokens=1-7 delims=/:." %%a in ("%date:~0,10%/%time: =0%") do set /a "d=%%a%%b%%c, t=1%%d%%e%%f%%g"
if %t% GTR 123595900 timeout /t 2 /nobreak >nul &goto :GET_DT
if %t% LSS 100000100 goto :GET_DT
echo %d%_%t:~1,-2%_%t:~-2%
pause &exit /b

別々に取得してるならまだしも同時に取得してそんな事故起こり得るの?都市伝説じゃね?
ところで"20211217143411"みたいな年月日時分秒を区切り文字無しの数字のみで表した形式って名前あるなら教えて欲しい
0598デフォルトの名無しさん
垢版 |
2021/12/17(金) 14:50:54.89ID:YK+z10uu
dateもtimeも参照する度に計算して返してるからありえなくはないはず
んなこと気にしだしたらやってらんないからまあ気にすんな
0599デフォルトの名無しさん
垢版 |
2021/12/17(金) 15:15:49.48ID:hTLZR6Rv
怪しい時間はスリープしてしまうのも手
決済の日付なんか微妙なの下手に振り分けたら揉めるしな、23:59で〆切でヨシ

そんなのbatでやってる人居るかはしらんが
0600デフォルトの名無しさん
垢版 |
2021/12/17(金) 17:15:52.28ID:U9ZWMMsm
>>597
日時ってデータとしては埋もれて目立たないから軽視されがちだけど
バッチでログ吐かせてY軸時間でグラフ出すような時にアッレッ!?ってなる
0602デフォルトの名無しさん
垢版 |
2021/12/17(金) 20:24:45.70ID:HfuHDFo+
>>601
これだと、time取得した後で日付が変わる可能性がごくわずか考えられる
やっぱり時刻が0秒台かどうかで判定したほうがいいと思う
0604デフォルトの名無しさん
垢版 |
2021/12/17(金) 21:03:18.69ID:BDVQn7Pa
>>601
あー同時に参照することばかり固執してたわ
敢えて順に取得して2度目との比較でTIMEの同日を保証出来るね
その方がシンプルで良いな
0605デフォルトの名無しさん
垢版 |
2021/12/18(土) 01:12:16.03ID:CB++7SQf
8ビットマイコンで16ビットタイマーの値を読むときなんかに使ったっけ
もちろんタイマー側にラッチ機能があって、そういう気遣いのいらないものもあったが
0607デフォルトの名無しさん
垢版 |
2021/12/24(金) 11:39:23.31ID:etjYYPj+
イベントログ保存したくて
wevtutil epl system xxx.evtx /q:"条件"

wevtutil al xxx.evtx /l:ja
でディレクトリ名が無効ですって出るんだが理由わかる?
0608デフォルトの名無しさん
垢版 |
2021/12/24(金) 11:43:38.16ID:etjYYPj+
自己解決しました
管理者で実行したら行けた
0610デフォルトの名無しさん
垢版 |
2022/01/02(日) 19:41:59.70ID:llzVm8Ys
Windowsでバッチファイルの%1とかに
今クリップボードに入ってるテキストを渡して起動したいけど
なんか方法ある?
0611デフォルトの名無しさん
垢版 |
2022/01/02(日) 20:13:43.31ID:Wx5RR6tp
とりあえず何も追加する必要ないので PowerShell がお手軽

例えばクリップボードの内容を tmp.txt に出すならバッチファイルやコマンドプロンプトで
>powershell -NoProfile -ExecutionPolicy Unrestricted -Command Get-Clipboard > tmp.txt

先に
>chcp 65001
しておくと UTF8 での出力もいけるっぽい
0614デフォルトの名無しさん
垢版 |
2022/01/03(月) 09:26:29.55ID:BdaWP45p
漏れは下のような、Ruby スクリプト内で、powershell コマンドを呼んで、
クリップボード内の文字列を処理している

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

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
0616デフォルトの名無しさん
垢版 |
2022/01/03(月) 13:18:16.70ID:0LszXjQc
環境変数名に一部記号も使えることを発見
#で始まれば一時変数、$で始まればバッチ間共通など、少しわかりやすくできる
0617デフォルトの名無しさん
垢版 |
2022/01/04(火) 00:14:37.12ID:a2P6Hn/H
塩野義製薬が週休3日制導入へ 来年4月、副業も解禁

塩野義製薬が「週休3日」選択可能に 給与は『週休2日の8割』副業や学び直しを支援

【フォーカス】サタケ/週休3日制 通年導入めざし夏季のみ試行中 交代制で水曜を休日に

旅館なのに週休3日!?陣屋・若女将の常識を覆した組織改革

“時代錯誤”から残業ゼロ、週休3日に! 鳥取の不動産会社が
レガシー企業からDX先進企業になれたワケ

ネクスウェイ、週休4日制・1日3時間勤務選択できる勤務体系を導入

日本初「週休4日制度」で、優秀な人材を採用するしくみとは? ?
ナレッジソサエティ久田社長に聞いてみた
0618デフォルトの名無しさん
垢版 |
2022/01/06(木) 07:53:54.89ID:JIskJ1L9
ファイルのリネームと
ファイルの移動
フォルダ自動作成
これだけで普段の作業の手間がほんとうに省ける
逆に何ができると便利だろう
0619デフォルトの名無しさん
垢版 |
2022/01/06(木) 08:04:00.41ID:JIskJ1L9
環境変数って
普通の変数とは違うの?
バッチファイル特有の言い回し?
%1
%i
%hoge
だっけ?
0620デフォルトの名無しさん
垢版 |
2022/01/06(木) 13:18:17.45ID:nDo7QbOD
アプリケーションプログラムの環境という意味
例えば一時作業フォルダを TEMP に指定するとアプリが参照して使ってくれる(事がある)
dirコマンドのデフォルトオプションはdircmd変数に設定出来る

いわゆる環境設定と呼ばれるね

そしてバッチファイル内でプログラミング言語の変数としても使える
0621デフォルトの名無しさん
垢版 |
2022/01/06(木) 13:23:22.58ID:nDo7QbOD
ちなみに %1 %%i は環境変数じゃないね
shift /? や for /? を読もう

環境変数はsetコマンドでセットして参照は%変数名%
set /? を読もう
0623デフォルトの名無しさん
垢版 |
2022/01/25(火) 21:13:49.45ID:aASmTB60
dir /b の結果を explorerの名前順(昇順|降順)にソートする簡単な方法無い?
数字を数値と見做してソート
バッチから利用出来るならOK。ps全く分からんけど powershellとかで出来ないかな?
カレントディレクトリの dir /b 相当なら dirで無くてもいい
for /f "delims=" %%a in ('dir /b ^| numsort.exe') do
みたいな感じで外部ソートツール導入でもOK。むしろ理想形
ファイル数は2000未満くらい。万単位とか考慮しなくていい
なるべくなら余計なインストールは避けたいけど自前でパースとソート作るのはハードル高過ぎなので何か方法があれば教えて欲しい
最悪逆順にするだけなら自前でも出来そうなのでせめて(昇順|降順)どちらかだけでも出来れば
0624デフォルトの名無しさん
垢版 |
2022/01/25(火) 21:22:10.78ID:s4YEdFZn
>>623
dir /b の結果とexplorerの名前順(昇順|降順)って違うん?
もし同じなら、単に dir /b > uuu.txt でリダイレクト
0625デフォルトの名無しさん
垢版 |
2022/01/25(火) 21:28:36.67ID:OaU1XWUD
半角数字だけでいいなら GnuWin の sort.exe を gsort.exe にリネームして使ってる
http://gnuwin32.sourceforge.net/packages/coreutils.htm
の Binaries の zip に入ってるやつ


>dir /b *.txt | gsort -n
11.txt
0123.txt
2222.txt
3333.txt
11111.txt

>dir /b *.txt
0123.txt
11.txt
11111.txt
2222.txt
3333.txt

こんな具合
漢数字とかは知らないので日本語(漢数字・全角)に対応したの
あれば知りたい……
0628デフォルトの名無しさん
垢版 |
2022/01/25(火) 22:26:05.82ID:aASmTB60
>>625
教えてもらったようにgsort.exeにリネームして使ってみたら
libintl3.dll が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。
とアラート出て使えなかった。win10
libintl3.dllをググったらjp.dll-files.comてとこ検索出て落とせるようなんだけどこれ入れて大丈夫?
0629デフォルトの名無しさん
垢版 |
2022/01/25(火) 22:30:15.41ID:OaU1XWUD
>>627
落ち着いて
そこは比較のために出した素の 「dir /b 」 の結果ですよ

>>628
ごめんなさい
上のページの Binaries の下の Dependencies も要るんだった
0630デフォルトの名無しさん
垢版 |
2022/01/25(火) 23:14:16.23ID:aASmTB60
>>629
ありがとう
libをシステムにコピーして使えました
でもコレ
dir /b *.ext | gsort -n
1.txt
2.txt

9.txt
10.txt
と、数字.ext なら数値順にソート出来ましたけど
文字列+数字.ext だと無理なようです
xxx1.txt
xxx10.txt
xxx2.txt
xxx20.txt
みたいになります
xxx_1.txt と文字列と数字の間に区切り記号入れても駄目
エクスプローラーのようには並ばないみたいですね

win32api使うかvbかpowershellかで出来るような事を以前どこかで読んだ気がするのですがそのソースが見付けられない。。
0631デフォルトの名無しさん
垢版 |
2022/01/26(水) 01:07:47.03ID:td9ayUMw
普通に見つかったけど、本当に探した?
@echo off
echo class P{[System.Runtime.InteropServices.DllImport("shlwapi.dll", >SortLogical.cs
echo CharSet = System.Runtime.InteropServices.CharSet.Unicode, ExactSpelling = true)] >>SortLogical.cs
echo public static extern int StrCmpLogicalW(string str1, string str2); >>SortLogical.cs
echo static void Main(){ string[] lines = System.Console.In.ReadToEnd().Split >>SortLogical.cs
echo (new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries); >>SortLogical.cs
echo System.Array.Sort(lines, StrCmpLogicalW); >>SortLogical.cs
echo System.Console.Out.WriteLine(string.Join("\r\n",lines));}} >>SortLogical.cs
for /f %%i in ('dir /s /b "%windir%\Microsoft.NET\csc.exe"') do set csc="%%i"
%csc% /nologo SortLogical.cs
dir /b | SortLogical
0632デフォルトの名無しさん
垢版 |
2022/01/26(水) 04:18:02.04ID:aOgfZBdB
>>631
すげぇ。生成されたexeで希望するソートが出来るようになりました
マジ感謝です
ありがとう

> 本当に探した?
検索語すら分からず「バッチ dir エクスプローラー並び順」とか他にも結構色々試して探しては見たのですが。。
StrCmpLogicalW が分かった今でもその方法を見付けられていません
0633デフォルトの名無しさん
垢版 |
2022/01/26(水) 06:51:01.88ID:fC9okRVc
エクスプローラーの並び順って
辞書順か数字順か
レジストリで変更可能だよね
0635デフォルトの名無しさん
垢版 |
2022/01/26(水) 08:34:25.15ID:e2k0MxNT
なるほど、数字の部分だけは数値に変換してから、小さい順に並べるのか

このアルゴリズムを考えるのは、難しい
0636デフォルトの名無しさん
垢版 |
2022/01/26(水) 09:10:13.24ID:TX0OTodc
俺なら必要な桁分0パディングするなあ
連番ファイルをエクスプローラーで直接使うなんてことはないし
0638デフォルトの名無しさん
垢版 |
2022/01/26(水) 11:52:52.47ID:+BcwC06P
>>635
スクリプトでやるなら正規表現などで数字部分を置換11→0000000011してからソートかな?
小数点以下ってどうなってたっけ?
でも記号 _ の並びまで違うから鬱陶しい
631のAPIはWin7には無いっぽいから需要はあるかもよ
0642デフォルトの名無しさん
垢版 |
2022/01/26(水) 22:43:54.21ID:2NoDFTFY
>>631
おおーっ、いいなコレ


>>630
今更感が強いけど、文字列やセパレータがはっきりしてるならこんな事も

>dir /b *.txt | gsort -g --key=4 --field-separator=x
xxx11.txt
xxx0123.txt
xxx2222.txt
xxx3333.txt
xxx11111.txt

>dir /b *.txt | gsort -n --key=2 --field-separator=-
xxx-01-23.txt
xxx-1-1.txt
xxx-2-222.txt
xxx-33-33.txt
xxx-111-11.txt

>dir /b *.txt | gsort -n --key=3 --field-separator=-
xxx-1-1.txt
xxx-111-11.txt
xxx-01-23.txt
xxx-33-33.txt
xxx-2-222.txt

ひとつ目はちょっと無理やりw
0645デフォルトの名無しさん
垢版 |
2022/02/05(土) 23:16:58.61ID:ICS6MdcL
・画像ファイルが縦長か横長か?
・画像ファイルの拡張子判別
上記2点をバッチから行いたい
縦横に関してはimageMagickで出来そう
identify -format "%[fx:h>w?1:2]" "ファイルパス"
拡張子判別も同様に %m でファイルタイプからやれそうではあるのですが
何か更に良い方法やコマンドラインアプリなどがあったらアドバイス欲しいです
0646デフォルトの名無しさん
垢版 |
2022/02/06(日) 04:23:41.63ID:D8jWL7f3
画像のサイズはOS標準の方法としてシェルネームスペースからファイルのプロパティの詳細タブの値を拾ってくるやつがあったと思う
COMが使えるスクリプトで取ってくる必要がある
拡張子はバッチファイル 拡張子 取得でぐぐったら出てくるんじゃないの
0647デフォルトの名無しさん
垢版 |
2022/02/06(日) 05:53:39.32ID:ZVoj0wBD
Param([Parameter(mandatory=$true)][String]$inputFile)
Add-Type -AssemblyName "System.Drawing"
try{
$img = [System.Drawing.Image]::FromFile($inputFile)
if ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Jpeg)) {
$mimetype = 'image/jpeg'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Png)) {
$mimetype = 'image/png'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Bmp)) {
$mimetype = 'image/bmp'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Gif)) {
$mimetype = 'image/gif'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Icon)) {
$mimetype = 'image/icon'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Tiff)) {
$mimetype = 'image/tiff'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Wmf)) {
$mimetype = 'image/wmf'
} elseif ($img.RawFormat.Equals([System.Drawing.Imaging.ImageFormat]::Exif)) {
$mimetype = 'image/exif'
} else {
$mimetype = 'image/unknown'
}
$w = $img.Width
$h = $img.Height
$img.Dispose()
}
catch{ $mimetype='unknown' }
echo "$mimetype`t$w`t$h"
0648デフォルトの名無しさん
垢版 |
2022/02/06(日) 05:54:07.77ID:ZVoj0wBD

getDetailsOfでプロパティを取ってくる以外の方法
jpg/png/gifぐらいだけど

powershell ./test.ps1 "画像ファイルのパス"

プロパティだと拡張子に関連付けられたものになる
中身がjpgなのにファイル拡張子が.pngの場合とかある?

なお、batに埋め込みたいならググれば方法は出てくる
0649デフォルトの名無しさん
垢版 |
2022/02/06(日) 09:33:19.21ID:T20/oaZi
>>647-648
ありがとうございます
最初、実行ポリシーが云々でエラーになったものの、ググって
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1 '%~1'
としたら動きました
シングルクォートにしないとスペースを含むパスでエラーになりました

> 中身がjpgなのにファイル拡張子が.pngの場合とかある?
バッチでリネームついでにそういった間違っている拡張子を正しいものに直したいと思いまして
image/jpeg とかを .jpg に変えたら面倒も無くそのまま使えそうです

powershell凄いですね。外部アプリ使わずに判別出来ちゃうんですね
WINEX32.DLL
https://www.vector.co.jp/soft/win95/prog/se478825.html
こういうのが必要なのかと思ってました
ただファイル一つ一つをバッチからpsを起動してたら遅いのだけが難点ですね
速さは重要ではないので構わないのですが
いっそ全部psで書けるスキルがあれば良いんですけどねー
バッチですら四苦八苦してる身としてはさくっと書ける人が羨ましいです
0650デフォルトの名無しさん
垢版 |
2022/02/16(水) 16:36:49.58ID:w27+Spzi
初心者過ぎて分からないんだが

コマンド >nul 2>&1
if "!ERRORLEVEL!" == "0" 〜
ってちゃんと意味ある?

出力捨てるのは成功するから毎回リターンコード0になったりする?
0651デフォルトの名無しさん
垢版 |
2022/02/16(水) 17:40:22.47ID:SGx0nl/1
正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。
異常時にコマンドがエラー出してもエラーになるから
結局、区別がつかない。
0652デフォルトの名無しさん
垢版 |
2022/02/16(水) 18:08:47.78ID:5G/Gik2e
>>651
辞めといた方がいいか

前の処理が正常終了したら次に進むベストプラクティスってなんだろう
0653デフォルトの名無しさん
垢版 |
2022/02/16(水) 18:18:47.77ID:t0Nu4cH6
コマンドの復帰コードと標準(エラー)出力のリダイレクトとは無関係なので
ちゃんとコマンドが復帰コードを返していたら問題ないはず
errorlevel環境変数を見るのはちょっとリスクがあるけどわかっているなら問題はない
if errorlevel 1 〜
なら確実
0655デフォルトの名無しさん
垢版 |
2022/02/16(水) 18:31:31.49ID:5G/Gik2e
ifのパラメーターにerrorlevelがあったのね
確かに環境変数使うより良さそう

PC起動時に毎回開きたいアプリを順番(前後関係あり)に開いてくだけだから基本startコマンドなのよね
0656デフォルトの名無しさん
垢版 |
2022/02/16(水) 18:32:09.18ID:5G/Gik2e
おーありがてえ
0657デフォルトの名無しさん
垢版 |
2022/02/16(水) 18:39:35.08ID:IpLn/l6Q
>>651
> 正常時に出力の無いコマンドはリダイレクトできないからエラーになるんじゃね。
どこからこんなアホな知識を仕入れたのか知らんが、そんな知識を開陳する度胸に感心したわ
0660デフォルトの名無しさん
垢版 |
2022/02/16(水) 22:29:00.93ID:5G/Gik2e
>>658
以上なのか…
勘違いしそうだったわ気を付けよ…
0661デフォルトの名無しさん
垢版 |
2022/02/20(日) 02:07:07.44ID:UpXKcN5y
これなんでこうなるの?

echo abc 行末|findstr "^abc"
一致
(echo abc 行末)|findstr "^abc"
一致
echo abc 行末|findstr "行末$"
一致
(echo abc 行末)|findstr "行末$"
不一致
echo abc 行末| findstr /r /c:"^abc 行末$"
一致
(echo abc 行末)| findstr /r /c:"^abc 行末$"
不一致

元はこういう感じでハマっててやっと原因突き止めたんだけど理由が分からん
(for /L %%j in (1,1,%i%) do for /f "delims=/" %%a in ('echo "%%B_%%j%%"') do echo %%~a
)|findstr "^001a\.txt$" || echo ok
因みに /x オプションも駄目だった

('echo "%%B_%%j%%"') の部分も元は ("!B_%%j!") で単独では展開されてたのにパイプ繋ぐと展開されずハマってた
パイプ繋いだら遅延展開無効化されるん?
0663デフォルトの名無しさん
垢版 |
2022/02/20(日) 03:21:58.43ID:j5UZdGyh
>>662
それだと、空白は文字列のOR扱いで、"行末"と"$"のどっちかってことになる
が、まあそういうことだね
echo onの状態で実行してみりゃわかる
0664デフォルトの名無しさん
垢版 |
2022/02/20(日) 03:38:00.04ID:UpXKcN5y
ありがとう
(echo abc 行末)|findstr /r /c:"^abc 行末 $"
これで一致したから半角スペース入ってしまってるで間違いないみたい
0666デフォルトの名無しさん
垢版 |
2022/02/20(日) 05:28:05.67ID:UpXKcN5y
>>665
当然echo onでも確認してる
例えばこんなの
for %a in (a b c) do (echo %a|findstr "b$")
echo onでの表示では %a | とパイプとの間にスペース入るけどechoの末尾にゴミなんて付かないのよ

元のバッチやコマンドプロンプトの入力で以下のようにスペース入ってれば末尾にスペース入るけど上記のように詰めて書けば入らない
for %a in (a b c) do (echo %a |findstr "b$")
0667デフォルトの名無しさん
垢版 |
2022/02/20(日) 05:50:10.39ID:WlVIdNMt
>>663
ん?
空白区切りってダブルクォートを無視するの?
"行末(sp)(sp)$" で不一致になるから "行末(sp)$" に一致してるんだと思ったけど
0669デフォルトの名無しさん
垢版 |
2022/02/25(金) 18:44:29.79ID:xURWaPVP
同じアプリのファイルを複数起動していて
コマンドラインが同じになっているとき
閉じたいものだけ閉じる方法ってありますか?
0671デフォルトの名無しさん
垢版 |
2022/02/25(金) 20:06:56.37ID:zbdaU1gm
>>670
全く同じexeを複数起動してるんなら、プロセスID指定しかないけど
プロセスID見たってどっちが消したいexeなのか判別できる?
・リスト表示
tasklist /fi "IMAGENAME eq xxx.exe"
・削除
taskkill /pid 9999

パスが違うとかならパス情報を見るとかでプロセスIDを特定できる
wmic process list full format:csv|findstr "C:\foo\bar\baz.exe"
0673デフォルトの名無しさん
垢版 |
2022/02/25(金) 22:00:00.64ID:zbdaU1gm
>>672
もう出来たとは思うけど、上のだとfindstrも一緒に検出されるので出した責任として訂正しとく
for /f "tokens=6 delims=," %%i in ('wmic process list full /format:csv^|findstr "C:\bin\INET\Jane"^|findstr /v findstr') do set pid=%%i
tasklist /fi "pid eq %pid%"
0676デフォルトの名無しさん
垢版 |
2022/03/10(木) 14:32:21.94ID:53waehJr
あるフォルダROOTの配下にフォルダ001〜フォルダ999があり、その中にはAAA,BBB,CCCという3ファイルがあるとします。
フォルダ001から999配下の全てのAAAをZZZにコピーするために
コマンドプロンプトでROOTフォルダで「for /r %i in (AAA) do copy %i %~pi\ZZZ」としたら求める結果になりましたが
これをバッチファイルに書くと構文エラーみたいなエラーがでます。

バッチファイルに書く場合どうしたらいいでしょうか。
0677デフォルトの名無しさん
垢版 |
2022/03/10(木) 15:13:37.97ID:jqA3dRQ6
魔空空間では
%i in (AAA) do copy % という名前の環境変数に展開されて消えてしまうのだ!
すべての%を%%に書き換えて対抗しよう!
なおコマンドラインでも環境変数が定義されていたら展開されてしまうぞ
こちらは対処不能だキヲツケロぉ
0678デフォルトの名無しさん
垢版 |
2022/03/10(木) 15:28:31.03ID:23a2YeOc
>>676
コピーするファイル数が膨大でなければバッチより2画面ファイラーの方が便利
ファイル検索して、反対側窓のフォルダーにコピー、移動する
dynaやafx
0679デフォルトの名無しさん
垢版 |
2022/03/10(木) 15:52:45.58ID:53waehJr
>>677
ありがとうございます。うまくいきました!
理由まで教えていただきありがとうございました。


>>678
ファイラ、懐かしいです。からこれ20年くらい前??FDとか使っていたことがありますが、、、、また使ってみようかと思います。
0680デフォルトの名無しさん
垢版 |
2022/03/12(土) 02:42:22.51ID:1/likOkq
家の光回線をIPv4 over IPv6に変えたら、「VPN931でしょ?」ERRORが出て書き込めなくなった

試行錯誤の後、携帯回線を無線子機経由、テザリングで繋いでおき
「ネットワークアダプター」のページからイーサネット(有線)を無効にして書き込み、
書き込みが終わったら再び光回線を有効にするようにした

しかし、つい携帯回線に切り換えたのを忘れたまま動画を観てしまうようなことが何度もあり、
1回で月無料分のギガを使い切ってしまい、有料になったり速度制限がかかったりして不便&勿体ないので
なんとかバッチ処理出来ないかと思い、
「有線LAN 無効化 バッチ」で検索して見つけた下記のページを参考にしてバッチファイルを作ってみた

https://mseeeen.msen.jp/switch-network-adapter-enabled-in-windows-with-batch-file/

----------

@ECHO OFF
netsh interface set interface "イーサネット" disabled
ECHO 一時的に光回線(有線・イーサネット)をOFFにしました

timeout 30
netsh interface set interface "イーサネット" enabled
if ERRORLEVEL = 1 PAUSE

----------
上記を拡張子batで保存し、参考URL同様にショートカット経由で管理者権限で起動するようにしました。
※メモ帳で編集したとき、デフォルトでUTF-8→ANSIにすることを知らずに文字化けして上手く動かなかったのはお約束。

これで、書き込む直前にショートカットで起動すれば
30秒だけ光回線が切れ、wifi=携帯回線で書き込める
その後は自動復帰するので繋ぎ忘れが無くなった

もしもっと良い方法があれば教えてくださいm(_ _)m
0681デフォルトの名無しさん
垢版 |
2022/03/12(土) 10:55:59.83ID:i3Z8TR4r
ネットワークの有効無効を変える必要はなくて、単にどっちがデフォルトゲートウェイになるかを制御するだけで十分だよ
スマホ側にプロキシたてて、専ブラ(だよね?)からそのプロキシを使うように設定すれば常時5chだけスマホ側に流すこともできる
0683デフォルトの名無しさん
垢版 |
2022/03/12(土) 13:36:04.21ID:i3Z8TR4r
理論的にはそうだけど実際5chが使ってるIP範囲調べたことあるかい?
CDN通してるから、取りうるIP範囲まるごとスマホに流したら5ch以外の多くのサイトのトラフィックもそっちに流れてデータ通信容量が消費されてしまう
0684デフォルトの名無しさん
垢版 |
2022/03/12(土) 13:41:51.25ID:i3Z8TR4r
途中で書き込んでしまった
消費されてしまうので、L3レベルでの経路選択は現実的ではない
なので一時的にまるごと切り替えてしまうか、URLを指定してシステム全体でプロキシ設定を行う、専ブラについてるプロキシ機能を使うとかのが良い
しっかりインスペクションして経路振り分けられるルーターを用意して設定できるならそれもありだが一般人向けではない
0685680
垢版 |
2022/03/12(土) 14:48:36.28ID:1/likOkq
>>681
流石ですね!あっという間に より良い方法を考えつくとは!

…ですが、専ブラに登録している全てのスレの新着チェック(=下り)は光回線で出来るので、
ギガ節約のためにも、無理にスマホに流さなくて良いのですよ

専ブラの上り(=書き込み)だけ携帯回線に流すバッチなんて作れますかね?
ヒントや参考になるURLでも構わないのですが
0686デフォルトの名無しさん
垢版 |
2022/03/12(土) 14:54:48.13ID:1/likOkq
PC再起動したら、 >>680 のバッチ実行時に「この関数を完了できません」が出て 狙い通りに動かなくなってしまった

仕方なく、以前と同じように 「アダプターのオプションを変更する」 からイーサネットを無効にして接続中

一番最初は 5chに書き込むたびにPCの裏に回り、 いちいち外しにくいLANケーブルを切り離していたから、
これでも 石器時代から稲作が出来るくらいには進化しているのだがw

たぶん名前が一致しなくなってしまった?のが原因と思うので、自分で対策してみますm(_ _)m
0687デフォルトの名無しさん
垢版 |
2022/03/12(土) 19:45:55.71ID:i3Z8TR4r
全自動で書き込みだけ他に流す仕組み考えてみたけど作らなきゃいけない部分もあるから質問者が実行できる気がしない(もはやスレチレベル)
スマホと書いてあるけど、安いPPPoEのプロバイダ契約するとか、donedoneや楽天、povoみたいな基本0円のSIM+モバイルルーターの回線と余ってるPCや仮想マシンを使っても良い

専ブラが使ってる5chのAPIの各リクエストが分離できる(事前に認証を行ったりする必要がない)と仮定すれば以下の仕組みで行けるはず
自宅内に5ch.netの各サーバーのリバースプロキシを立ててオレオレCA運用を行う
クライアント側でCAの自己証明書をOSに追加して、そのローカルIPをhostsで5chの各サーバに設定する
リバースプロキシ側で特定のパスのリクエストだけはスマホ側に用意したサーバーに投げる
スマホ側のサーバーはリクエストを受け取ったら、正しい5chのサーバーに投げて、その応答を返す
0688デフォルトの名無しさん
垢版 |
2022/03/12(土) 20:42:13.77ID:dQfogYw2
ま、5chはIPは5つしか無いけど
104.18.231.150
104.18.232.150
104.18.233.150
104.18.234.150
104.18.235.150
これはどの鯖でも共通(apiだろうがegg,kizuna,meviusだろうが)で
この5つのどれかをランダムで使う
なお、このIPは導入時から変わってない
0689デフォルトの名無しさん
垢版 |
2022/03/18(金) 00:52:20.19ID:SoYXm1dj
startでバッチファイルを実行すると、cmdウィンドウが残る
バッチファイルの最後をexit /B でなくexitにすると残らなかった
0691デフォルトの名無しさん
垢版 |
2022/03/24(木) 13:13:33.35ID:dCVvmFB6
最近ReactOSのソース読み始めたが勉強になるな
変な挙動のところは親切に#ifndef MSCMD_XXX_QUIRKSって書いてあってわろ
MS-DOS2.0のソースはMS公式が公開してるけどアセンブリは難解すぎて諦めた
0694デフォルトの名無しさん
垢版 |
2022/03/29(火) 16:59:49.39ID:zndnyGpb
Batになんか仕込むんならPowershellがいちばん簡単
VBSも上手いことやれば仕込めるし
0697デフォルトの名無しさん
垢版 |
2022/03/29(火) 21:38:59.70ID:6qHTZxky
631みたいのはバッチ内のPowerShellでもっとスマートに書けるね
相変わらずコンソール消しても一瞬出てきて邪魔だけど
完全に消すにはvbsから呼んだりで結局2ファイルになる
0698デフォルトの名無しさん
垢版 |
2022/04/03(日) 02:50:31.03ID:hpCvdrMf
バッチ自体を初めて作っててクリップボードのテキストを[]で囲んだ名前のフォルダをデスクトップに作りたいんだけど
powershell get-clipboardでクリップボードから持ってくる
mdとかNew-Item NewDirecrtoryでフォルダを作る
までわかって|とか>で色々試して見たんだけどまあ上手くいくはずもなく
そもそも出来る事なのかもわからないから質問しに来ました!たっけてー
0701デフォルトの名無しさん
垢版 |
2022/04/03(日) 09:37:15.22ID:hpCvdrMf
>>700
ありがとう!
for /f "delims=" %%a in ('powershell clipboard') do md C:\Users\----\Desktop\[%%~a]
でいけました。
0702デフォルトの名無しさん
垢版 |
2022/04/03(日) 15:33:41.09ID:MONKPJtx
>>698
ちなみにPowerShellだけなら
powershell -c "Get-ClipBoard | ?{$_} | foreach {$dirName='[{0}]' -f $_; $dirPath=[IO.Path]::Combine([Environment]::GetFolderPath('Desktop'), $dirName); $null=[IO.Directory]::CreateDirectory($dirPath);}"
0704デフォルトの名無しさん
垢版 |
2022/04/03(日) 17:32:35.14ID:5jbreqOF
スペースのある文字列の扱いがわからんな
複数作ることを意図または許容するのか否かでちょっと違ってくる
0706デフォルトの名無しさん
垢版 |
2022/04/03(日) 23:24:55.78ID:hpCvdrMf
色々方法があるけど何かしらcmdのみでは出来ないって事だけはわかった
面白いから少し勉強しようかなあ
0707デフォルトの名無しさん
垢版 |
2022/04/14(木) 00:56:37.37ID:FFCnePh6
batにドラッグするだけで複数zipを同じ階層に解凍してくれるbatが作りたいです。
圧縮の場合は
@echo off
path C:\Program Files\7-Zip;%path%
for %%i in (%*) do cd /d "%%~i" && 7z a "%%~i.zip" *
で出来るのですが、解凍の場合がわかりません。わかる方いれば教えていただきたいです。宜しくお願い致します。
0709デフォルトの名無しさん
垢版 |
2022/04/14(木) 16:24:25.05ID:NCtDoq3M
俺の勘違いだったらすまん
ドラッグで引数を渡す系だとバッチは括弧付きのファイル名が入った時点で破綻するような気がする
変なしがらみのないvbsやjs辺りで書いた方がいいかも
0712デフォルトの名無しさん
垢版 |
2022/04/15(金) 20:04:21.77ID:neP5mDTX
>>708を試したが駄目でした batにドラッグしても何も起こりません。
>>711
Claunchにbat登録だと、ファイルをモニタの縁にドラッグするだけで解凍できてとても便利なんです
ファイル選んで右クリック、多いコンテキストメニューから目的を探してクリック…というのよりbatドラッグがしたくて…。
0714デフォルトの名無しさん
垢版 |
2022/04/15(金) 21:59:36.90ID:EPzG8fyD
>>707
一年前に7-Zipスレで質問した人だろ
ゴミ箱への移動がどうとか言ってた人

まさかドラッグしてるのはフォルダじゃないだろな
0717デフォルトの名無しさん
垢版 |
2022/04/15(金) 23:40:21.50ID:neP5mDTX
フォルダを圧縮したいのでフォルダドラッグしてます それはbatファイルでは不可能なんですかね
0720デフォルトの名無しさん
垢版 |
2022/04/16(土) 10:15:06.24ID:Xjbe7mxo
昔自作したやつがそう言えばどっかにあったな
色々試したけどzip名に全角スペースが含まれてる場合だけはどうにも出来なくて別のリネームバッチで半角スペースに置き換えてたわ
0721デフォルトの名無しさん
垢版 |
2022/04/16(土) 14:56:19.74ID:D1hG0R6r
list1.txt
田中
山田

list2.txt
一郎
次郎
三郎
に対して

xj.bat
@echo off
setlocal enabledelayedexpansion

call :crossjoin "" %*
exit /b

:crossjoin
for /F "tokens=*" %%l in (%~2) do (
if [%~3] == [] (
set x=%~1%%l
echo !x:__=,!
) else (
set y= %*
set y=!y: %1=!
set y=!y: %2=!
call :crossjoin "%~1%%l__" !y!
)
)
を動かすと

xj.bat list1.txt list2.txt (続く)
0722デフォルトの名無しさん
垢版 |
2022/04/16(土) 14:56:54.30ID:D1hG0R6r
田中,一郎
田中,次郎
田中,三郎
山田,一郎
山田,次郎
山田,三郎
を得ます

このバッチファイルを
list3.txt

田中
山田

list4.txt
名前
一郎
次郎
三郎
と、見出しが入ったファイルに対応するよう
改造していただけませんか
0724721
垢版 |
2022/04/16(土) 15:25:35.02ID:D1hG0R6r
ありがとうございます
今アンドロイドなので、PC使えるときに
試して報告します
ちなみに、こういう総当りって、awkやPerl
でも作れるものでしょうか?
0725デフォルトの名無しさん
垢版 |
2022/04/16(土) 15:43:07.54ID:pX/6gg3y
%%lとか気持ち悪いな
こういうこと?

for /f "skip=1 delims=" %%a in (list3.txt) do for /f "skip=1 delims=" %%b in (list4.txt) do echo %%a,%%b
pause

なんでcallしたり置換したり面倒臭い事してるのか分からん
0726721
垢版 |
2022/04/16(土) 15:58:27.63ID:D1hG0R6r
ありがとうございます
引用先の元ネタは、list1.txtなどの
対象ファイルがいくつでもいけます
そのためかと
0727デフォルトの名無しさん
垢版 |
2022/04/16(土) 17:13:22.10ID:nVJ4wCm0
やりたい事に対して一見して処理が意味不明
コードレビューすれば必ず突っ込みが入るパターン
0729721
垢版 |
2022/04/17(日) 14:55:17.75ID:wrqgojCl
"tokens=*" を
"skip=1 tokens=*" に変えたら
見出しを飛ばしてデータを作ってくれました

だけど出力ファイルが大きいとかなり
時間がかかりますね

元ネタのところに行ってVBS版の作成を
依頼してみます
ありがとうございました
0730デフォルトの名無しさん
垢版 |
2022/04/17(日) 15:10:00.22ID:jfoLRRUl
ニコイチする度にcallしてたらそりゃ遅いわ
再帰でのcallやめるだけで結構速くなるよ
0731デフォルトの名無しさん
垢版 |
2022/04/17(日) 16:31:06.01ID:A4GG7JI6
ハッチ処理はあまりやりたくないから、
もっとかっこいい言語でかいて、バッチに変換する(コンパイル)できるといい
バッチ見えなく化計画
0732デフォルトの名無しさん
垢版 |
2022/04/17(日) 17:32:55.50ID:iLyScgaF
>>708さんのを使ってみました
ファイル名にスペースが入っていると展開されないのを回避することできますか

:start
if "%~1"=="" goto :EOF
"C:\Program Files\7-Zip\7zG.exe" x "%1"
shift
goto :start
0738デフォルトの名無しさん
垢版 |
2022/04/18(月) 11:27:46.45ID:t3NwdXGg
シンプルだからこそC++でジェネレートした.batを目視確認してから実行とかしやすいわけで
0740デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:16:43.44ID:74jROqLf
すでにあるコマンドを使うというのは楽でいい
もう少し細かいことをしたいと思うと苦労するけど
0741デフォルトの名無しさん
垢版 |
2022/04/20(水) 03:57:14.74ID:RFdms0p+
PAUSEコマンド関連で質問です

バッチファイル中にPAUSEコマンドを入れるとそこでキー入力を待ちますが、
その延長で
・エクスプローラでダブルクリックされて起動された場合はPAUSEで止める
・コマンドプロンプトから起動された場合は止めない
ということをしたいです

PAUSEコマンド自体には何もオプション等は無いようなのですが、何か方法はありますか

環境変数等をみて動作を切り替えることができないか調べてみましたが、
どちらの方法で起動されても同一なようで、悩んでおります
0743デフォルトの名無しさん
垢版 |
2022/04/20(水) 07:19:49.48ID:Cwlkz3kl
コマンドプロンプトを起動するときのショートカットに/k:autoexec.batを入れて
autoexec.batの中でset not_double_click=true
そしてダブルクリックで起動するバッチの中で
if not "%not_double_click%"=="true" pause
とか、どうかな
0744デフォルトの名無しさん
垢版 |
2022/04/20(水) 09:15:24.62ID:RFdms0p+
>>742-743
回答どうもです

なるほど、ショートカットを作り、そこに判定の仕掛けを入れる、という方式ですね

ツールを配布するときは、ショートカットの設定やコマンドプロンプトの設定を
するためのインストーラが必要になりそうですね…

バッチファイル単体でどうにか…と思いましたが、検討してみます
0745デフォルトの名無しさん
垢版 |
2022/04/20(水) 09:26:15.67ID:q7JwT6An
>>744
いやいや、そんな面倒なことしなくても
>>446 からの流れで %cmdcmdline% 見て判定する方法書かれてるでしょ
ID:lVKoKJNl
0748デフォルトの名無しさん
垢版 |
2022/04/24(日) 09:15:29.28ID:vcjjnxKB
>>739
setlocal enabledelayedexpansion
set n=0
for %%a in (%*) do set /a n+=1
if %n% GTR 64 >&2 echo ERROR: Args is Max limit 64 exceeded.&pause&exit /b 1
set A=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$+-/:@[]_{}
set i=0
for %%a in (%*) do for %%b in (!i!) do for /f %%c in ("!A:~%%b,1!") do (
set "CMD_FOR=!CMD_FOR!for /f "usebackq delims=" %%%%c in (%%a) do "
set CMD_OUT=!CMD_OUT!,%%%%c
set /a i+=1
)
%CMD_FOR%echo %CMD_OUT:~1%
pause&exit /b 0
引数最大64個になってるけどfor変数のリストset Aを追加すれば増やせる
実際にどこまでforを多段に出来るかは知らない
コマンドの文字数制限とかあったような気がする
0749721
垢版 |
2022/04/24(日) 11:08:56.51ID:IqM9oVR7
>>748

頭に@echo offをつけやってみました

10万行ぐらいの出力ファイルを
ローカルHDDに作ると

721では30分、
748では5分以内
(いつ終わったか分からないため)
となりました

ファイルのお尻になんか1行
ついてるのはご愛敬
0754デフォルトの名無しさん
垢版 |
2022/04/26(火) 00:02:39.06ID:/dRsx73H
>>753
引数の数だけ >>725 みたいなコマンドを生成して実行してるだけ
set "CMD_FOR=!CMD_FOR!for /f "usebackq delims=" %%%%c in (%%a) do "
set CMD_OUT=!CMD_OUT!,%%%%c
%CMD_FOR%echo %CMD_OUT:~1%
で察せ
0756デフォルトの名無しさん
垢版 |
2022/04/26(火) 01:04:14.98ID:/dRsx73H
1、2行入れたList.txt用意してecho onで実行して追ってみればどこがどうなってるのかくらい池沼でなければ分かるでしょ
0757デフォルトの名無しさん
垢版 |
2022/04/26(火) 23:13:58.40ID:AEcCnDU9
フォルダの中にファイルが10個以上あったらタイムスタンプが一番古いファイルを削除する処理をバッチファイルでどう書くかどなたか教えろください。。
0761デフォルトの名無しさん
垢版 |
2022/04/27(水) 01:13:59.63ID:CxYG3qjN
pushd, popdは出口exitがたくさんあったり、あちこちgotoしたりすると
つじつまがあわなくなることがある
そういう時は%cd%でフォルダ位置を覚えておき、最後そこに戻すほうが気分的に楽
0763デフォルトの名無しさん
垢版 |
2022/04/27(水) 18:14:04.80ID:pviHRewB
>>757
Ruby で書いてみた。
DryRun なので、実際にはファイルは削除されません

require 'fileutils'

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/Documents/test/*"

# そのディレクトリ内の全てのファイルパス・更新時刻を取得する。
# [ ファイルパス, 更新時刻 ]の配列の配列を戻す
def collect_filepaths_and_mtime( dir_path )
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.map { |full_path| [ full_path, File.stat( full_path ).mtime ] } # [ ファイルパス, 更新時刻 ]
end

temp_ary = collect_filepaths_and_mtime( dir_path )

if temp_ary.length >= 10
temp_ary.sort_by! { |ary| ary[ 1 ] } # 更新時刻の古い順でソート
# p temp_ary

FileUtils::DryRun.remove( temp_ary.first[ 0 ] ) # 削除
else
puts "ファイル数は#{ temp_ary.length } です。処理するファイルはありません!"
end
0765デフォルトの名無しさん
垢版 |
2022/04/30(土) 11:02:51.79ID:usL/g0YR
>>748
for /L 129個でやってみた
流石に途中で止めたけど以下で問題無く動いているようだから for の段数自体に制限はなさそう
文字数制限は過去ログで set が8190文字とか見たような
cmd.exe が1度にパース出来る文字数なのか setコマンドの制限なのかは分からないけど前者ならそこが限界になるね

@echo off
setlocal enabledelayedexpansion
set $$$=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$+-/:@[]_{}。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚'\
set iii=0
for /L %%a in (1,1,129) do for %%b in (!iii!) do for /f %%c in ("!$$$:~%%b,1!") do (
set "CMD_FOR=!CMD_FOR!for /L %%%%c in (0,1,1) do "
set CMD_OUT=!CMD_OUT!%%%%c
set /a iii+=1
)
copy nul out.txt >nul
echo "%CMD_FOR%>>out.txt echo %CMD_OUT%"
%CMD_FOR%>>out.txt echo %CMD_OUT%
pause&exit /b
0767デフォルトの名無しさん
垢版 |
2022/05/08(日) 05:37:23.76ID:L9rI0dwl
お助けくださいm(vv)m
タスクスケジューラにAdministrators最上位権限の6時間おき無期限タスクを設置しました
エラーなども解決し、やっと定刻に指定したタスクを実行するよう調整出来たのですが、対象となるregファイルの起動≒実行ではなく「次のプログラムを使って開く」的なダイアログ表示になってしまいます

OS上ではダブクリで処理していた内容なので盲点でした
スケジューラでregファイルを使用しレジストリの改変を定期的に行う場合、操作の記述はどのようにすれば宜しいでしょうか?
それか、当該regファイルを実行するためのバッチファイル記述を願いたいです
スケジューラでバッチ実行を指定する方法はネット上にも複数ありました

reg系は散々ググっても検索に出ないのが辛いですね
アドバイスお願いしますm(vv)m
0768デフォルトの名無しさん
垢版 |
2022/05/08(日) 06:42:10.44ID:21iaPdPG
>>767
単に regedit %1 すりゃいい話じゃなくて?
0769デフォルトの名無しさん
垢版 |
2022/05/08(日) 07:07:27.41ID:L9rI0dwl
レジストリ等は長年平気で触っているくせに、コマンド的な知識・技量ともに不足しており、コピペやポン入れ以外の微調整が出来ませんでした

XPか7時代に作った
----------
@echo off

echo.
echo ==========================================
echo 「高速スタートアップを有効にする」の無効化
echo ==========================================
echo.

rem -----「高速スタートアップを有効にする」の無効化 -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Power" /v "HiberbootEnabled" /t REG_DWORD /d "0" /f

pause

exit
----------
を発見し、そのままreg用バッチとして該当箇所コピー入れ替え→余裕のタスク発動→regも無事改変されました
元のソースがあるからこその応用ですが、スレをお騒がせして申し訳ありませんm(vv)m
コピペ文化は自業自得ながらも辛いものがありますね
0770デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:03:26.14ID:gcxSlYEt
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡

リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング

1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!

『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル

副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望

茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金

長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給

フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
0771デフォルトの名無しさん
垢版 |
2022/05/19(木) 11:35:25.20ID:aWExf7Ea
C:\Freesoftというフォルダにtest.rarというファイルが置いてあって、
それをwinrarの64bit版で
Z:のルートにフォルダを作らずそのまま解凍させるというようなbatファイルが欲しいのですが
誰か記述例を教えてください。
当方batファイルに関しては無知です
0773デフォルトの名無しさん
垢版 |
2022/05/19(木) 14:15:05.74ID:Rn3o2leA
Ruby スクリプト内で、7-zip を呼び出す場合、
dest_dir に、a フォルダが作られて、その中に再帰的に階層が作られる。
ここで、aフォルダが作られず直接、tmp フォルダ以下へ展開されるオプションは、7-zipでは探せなかった

zip7_exe = "C:/Program Files/7-Zip/7z.exe"
archive_path = "C:/Users/Owner/Documents/test/a.zip"
dest_dir = "C:/Users/Owner/Documents/tmp"

# Program Files には半角空白があるので、"〜" で囲む。
# x で解凍する。-o で解凍先のフォルダを指定する
puts %x("#{ zip7_exe }" x -o#{ dest_dir } #{ archive_path }) # 解凍

つまり、コマンドプロンプトでは、
"C:/Program Files/7-Zip/7z.exe" x -oC:/Users/Owner/Documents/tmp C:/Users/Owner/Documents/test/a.zip

ここでの注意点は、Program Files には半角空白があるので、"〜" で囲む事と、
-oC:/ の、-oとC:/の間に、空白を入れない事

ここで、C:/Program Files/7-Zip を、Windows のユーザー環境変数パスに追加すれば、
絶対パス無しで、7z コマンドを使えるので、
7z x -oC:/〜 C:/〜 と書ける

もし、xではなく、e オプションを使うと、
dest_dirにアーカイブの階層をフラットにして、すべてのフォルダ・ファイルを展開する!
フォルダ構成を無視して解凍する!

限定的な使い方だが、アーカイブが再帰的なフォルダ構成ではない場合には、
これで、aフォルダが作られず直接、dest_dirフォルダへ展開できる!

RAR は試していないが、a.zipの代わりに、a.rarとすれば、
拡張子から自動判別して、解凍できると思う
0774デフォルトの名無しさん
垢版 |
2022/05/20(金) 09:45:16.10ID:lLlVMTfc
>>772
C:\Program Files\WinRARのフォルダの中にWinRAR.exeがありますが
別に7zipででもzipでもrarでもかまわないという感じです。

>>773
ありがとうございます。
すいませんがこちらの勘違いで置き場所を間違ってたので変更させてください。

Yドライブ(外付けハードディスク)のsoftというフォルダにabc.zip(ファイル名は仮の名前)
というファイルがあるとして
「Y:\soft/abc.zip」
このabc.zipをZドライブ(RAMディスク)上にbatファイルダブルクリックで解凍したいです。

解凍の際にそのまま解凍でもフォルダを作ってそこに解凍ででもどちらでもかまわないです。
7zipはさっきインストールしました。

7zipと winrarはともに一時ファイルの作成場所をZのtempフォルダに指定してあります
「Z:\rartmp」←こんな感じ。

この場合のbatファイルはどうなりましょうか?

なぜbatで解凍したいかというと、某フリーソフトなんですが更新が頻繁にあって、更新の通知に対してYESを選ぶと小さいサイズの
ファイルを6000個以上書き込むみたいで、更新するのに20分ぐらいかかります。

それだったら更新の通知が来るたびにキャンセルして公式サイトから最新版のzipファイルを入手して
RAMディスク上に解凍したのを起動させたほうが、短い時間ですむんじゃないかという考えです
0775773
垢版 |
2022/05/20(金) 12:29:11.62ID:SIlSZC9T
773 に書いてあるけど、
Program Files には半角空白があるので、実行ファイルの絶対パスを、"〜"で囲む

"C:/Program Files/WinRAR/WinRAR.exe" 引数1 引数2

ここで、C:/Program Files/WinRAR を、Windows のユーザー環境変数パスに追加すれば、
絶対パス無しで、WinRAR コマンドを使えるので、
「WinRAR 引数1 引数2」と書ける

ダブルクリックで起動したいのなら、
デスクトップにショートカットでも作れば?

例えば、773 のRuby スクリプトが、
C:/Users/Owner/Documents/Ruby/script.rb にある場合、

ショートカットのリンク先
C:\Windows\System32\cmd.exe /k "ruby C:/Users/Owner/Documents/Ruby/script.rb"

これは、コマンドプロンプト・cmd.exe を起動して、
ruby コマンドで、script.rbを実行する
(注意! 書き込めないので、cmd を英小文字に変換して下さい)

他には、VBScript でも、ダブルクリックで起動できたと思う。
漏れは、bat は知らないから、バッチファイルをダブルクリックで起動できるかどうかは知らない

7-zip のオプションで、一時ファイルの作成場所の指定も、見たような気もする。調べて下さい

ただ、7-zipの7z.exe はコマンド用じゃなく、画面操作用だから、
必ず、解凍先フォルダは空の状態で始めて下さい!
そこにファイルがあると、同じ名前の場合に、上書きしますかとか聞かれて、コマンドが止まる

だから本当は、7-zipのコマンド用実行ファイルを使った方がよいかも
0777デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:50:08.11ID:zxJBX/+G
と、バカが申しております。
0779デフォルトの名無しさん
垢版 |
2022/05/21(土) 06:37:24.42ID:55Td3nWK
と、幼稚園児が申しております。
0781デフォルトの名無しさん
垢版 |
2022/05/22(日) 18:17:57.65ID:RDTYjvSl
rarを解凍する機会なんてそんなないのにbatが欲しい?しかもbatファイルに関しては無知?妙だな…
0782デフォルトの名無しさん
垢版 |
2022/05/23(月) 07:47:47.45ID:Lvn387tn
forのin部で wmic を使って文字列取得しようとするとdo以後のコマンド類がバグる
for /f "tokens=2 delims==" %%a in ('wmic process where "name=\"hoge.exe\"" get CommandLine /value 2^>nul^|find "CommandLine"') do set RUNEXE=%%a
と最小限に留めたらecho on でプロンプトが削れて表示は少しおかしいものの一応動作はした
でも「バグってるものがたまたま動いてるだけ」の状態が心情的に嫌なので代替手段があれば教えて欲しい
やりたい事は特定のexeが実行中か否か
D:\app\a\hoge.exe が実行中かどうかを調べたいとして
D:\app\b\hoge.exe のような別ディレクトリにある同名のexeは実行中でもOK
tasklistだとhoge.exeが稼働してるかどうかは調べられるけどどのディレクトリのモノまでかは特定不能のよう
0783デフォルトの名無しさん
垢版 |
2022/05/23(月) 07:58:02.47ID:Lvn387tn
forで取らずにリダイレクトして一旦TMPファイルに書き出せば良いんだろうけどなんか負けた気がするのでそれは最終手段
0784デフォルトの名無しさん
垢版 |
2022/05/23(月) 09:22:19.13ID:vgqZRn8w
パイプを犯人扱いしてfor内でifしちゃうのもありかな?

あと細かいけど"set RUNEXE=%%~a"としないとスペースとかで死ぬ
0785デフォルトの名無しさん
垢版 |
2022/05/23(月) 09:32:45.04ID:Lvn387tn
>>784
パスにスペースを含む場合、%%~aが利かない
頭の"だけ除かれてケツの"だけが残る罠
あとパイプ無くてもバグる
0786デフォルトの名無しさん
垢版 |
2022/05/23(月) 12:58:34.94ID:Lvn387tn
自己解決
> %%~aが利かない
はケツにスペース入ってたから
バグるのは文字コード上の問題のよう
http://scripting.cocolog-nifty.com/blog/2009/09/wmic-6efe.html
パイプだと改行コードがおかしくなるだけらしいけどその後のコマンド類がおかしくなるのは不明
URL先の説明にあるように直接ファイルへリダイレクトしてtypeで読めばバグらないようになった
wmic process where "name='hoge.exe'" get CommandLine 2>nul >$tmp.txt
for /f "delims=" %%a in ('type $tmp.txt^|find ":"') do for %%b in (%%a) do set "s=%%~b"
0788デフォルトの名無しさん
垢版 |
2022/05/23(月) 17:31:28.72ID:JTigk3sw
コマンドプロンプトはとても残念なので
set RUNEXE="%%~a"
echo RUNEXE: "%RUNEXE%"
とすると(%a=「t e s t」だった場合)RUNEXE: ""t e s t""と表示されるのだよ...
0791デフォルトの名無しさん
垢版 |
2022/05/23(月) 20:13:36.87ID:kx8uWZPf
非推奨烙印はcmdを滅ぼそうとしているMS内の一派の仕業だから気にするな
vbsやpowershellのようにcomの使える言語であれば同じことできるから要らんといえば要らんのだがな
0792デフォルトの名無しさん
垢版 |
2022/05/23(月) 22:36:34.02ID:vE3vs/4c
自分の周りではあまり知られてないようなのだけど、
setは代入文全体を"〜"で括るとうまくいく場合が多い。(確実ではない)

cmd /v:on
set "aaa=(bbb|ccc)<ddd"
echo aaa=[!aaa!]

aaa=[(bbb|ccc)<ddd]

引数でパスを受け取るバッチファイルでよく使う。
「〜」と「"〜"」のどちらの形式で指定されても同じ値を得られる。
@echo off
setlocal EnableDelayedExpansion
set "FilePath=%~1"
echo FilePath=[!FilePath!]
exit /b
0793デフォルトの名無しさん
垢版 |
2022/05/24(火) 15:42:40.62ID:DHD4MJfY
好みだろうけど
常に値はリテラルな""に埋め込まれたものと考えることにした
なんらかの一貫性を貫くのが精神衛生上よい
0794デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:01:20.85ID:EZq8VYJv
不自由でも一貫性を好む者って多くの事に対応出来ない低脳だと言ってるようなもの
最適を選ばずワンパターンな手法に頼り用いたがる思考停止した老害へと一直線
0795デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:09:51.54ID:DHD4MJfY
むしろワンパな%~の剥ぎ取りを信頼してるのが気になったんだが
ダメ文字入っててもサブストリング置換で最後と最初の文字削ったり頭を柔らかく持とう
0796デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:12:20.60ID:fGpRFhuy
文字列の置換抜き出しを考えてるなら常に""の中の状態にするのは正解だと思う
0797デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:32:08.01ID:wIwv7WB3
バッチには(残念ながら)絶対はないから、すぐに展開せず要時まで自由度を残す習慣は大事だと思う
0798デフォルトの名無しさん
垢版 |
2022/05/24(火) 19:24:26.65ID:ZQNStJn7
ダブルクォートをまともに削除できるのが%~しかないのが全部悪い

環境変数にスペースが入っている「かもしれない」状態になるとまともにダブルクォートを外す手段がないんだよね。
set File1=X:\a a.txtとset File2="X:\a a.txt"から同じ状態に持ってこれるコードは簡潔に書く方法がないから諦めた。
sub.bat %File1% %File2% // File1が分裂して死ぬ
sub.bat "%File1%" "%File2%" // File2のダブルクォートが二重になって死ぬ

結局%~1ではがすのが1番まともに書けると思う
0799デフォルトの名無しさん
垢版 |
2022/05/25(水) 03:42:10.08ID:Mc6K3UpU
>>798
set "File2=X:\a a.txt"
だと何かハマるパターンがあるの?
普段こうするようにしてるから、後学のために知っておきたい
0800デフォルトの名無しさん
垢版 |
2022/05/25(水) 09:12:08.26ID:nfFPZ/Hm
>>799
set "File2=X:\a a.txt" と
set File2="X:\a a.txt" で結果が違う
俺もファルパスなら上の書き方しか使わん
0801デフォルトの名無しさん
垢版 |
2022/05/25(水) 20:31:54.51ID:CvuRtmLM
C:\Program Files (x86)
結構昔からあるこのフォルダの配下に置かれたファイルをまともに扱えるバッチはどれだけあるだろうか…
0802デフォルトの名無しさん
垢版 |
2022/05/26(木) 00:47:09.31ID:/szrY+JV
>>800
いや、だからその結果が違うのを踏まえた上で、何か罠があったりするのか、という話
回避策があるのにわざわざ問題のある2例しか上げてないから、
何かしらの罠があるから例に出さずにいたのかな、と
0804デフォルトの名無しさん
垢版 |
2022/05/26(木) 15:42:12.26ID:0e7T6NOT
半角スペースや&の付いたファイルなんか知った事かと言い切れるなら幸せなんだがな
0805デフォルトの名無しさん
垢版 |
2022/05/26(木) 15:55:49.96ID:J8y6hNBw
>>801
そこだけの問題なら、そのフォルダにシンボリックを張って別の入り口を作り、そこから出入りする
0807デフォルトの名無しさん
垢版 |
2022/05/27(金) 15:37:55.51ID:DoIFvz+R
>>802
環境変数にダブルクォートが入るかそうじゃないかだけの問題なのでそこだけの違いにした
こっちの書き方の方が好みか?
set "File3=X:\a a.txt"
set "File4="X:\a a.txt""
File4の書き方は受け入れられんだろうからこの書き方はやめた
0808デフォルトの名無しさん
垢版 |
2022/05/27(金) 21:59:22.03ID:cruiCFAs
>>807
さすがにそのFile4の書き方はないでしょ。好みの問題じゃない。
「&」とか含めないのでは?
0809デフォルトの名無しさん
垢版 |
2022/05/28(土) 00:40:39.75ID:eWdSCVXj
>>807
からかわれてるのか、はぐらかされてるのか判断つきかねる
最初の疑問には全く回答得られてないし

とりあえず半年ROMっときますわ
0810デフォルトの名無しさん
垢版 |
2022/05/28(土) 01:15:25.17ID:N6SgNzpI
set File1=X:\a & b.txt
set File2="X:\a & b.txt"
set "File3=X:\a & b.txt"
set "File4="X:\a & b.txt""
File4駄目だったわ。File1もファイル名が切れるが

最初の疑問(>>799 >何かハマるパターンあるの?)なら、
俺がFile3のパターンでハマったことはない
0811デフォルトの名無しさん
垢版 |
2022/05/28(土) 01:53:02.54ID:sY9CTUi4
>>807
4はどういう状況で使うのか気になる。危険しか感じない
わざと反転させたい場合?

>>810
値に「"&"」など、"エスケープしてる状態で含んでいる場合、反転する
set S=abc"&"def
set "STR_A=hoge%S%fuga"

結局、「何でも許容出来るように」に対応するのはコストが高過ぎるので、想定され得るものに限定しそれに合わせて書くのが現実的
値にしろ運用にしろ何らかの制限付きという条件の下で割り切って使うならバッチは楽
全てのエラー判定とかやり出すと膨れ上がるしキリ無い
何を制限とするかの見極めと切り捨てが大切
0812デフォルトの名無しさん
垢版 |
2022/05/28(土) 02:02:37.06ID:4gWpv+XJ
BATでは取返しのつかない結果にならない限りエラーで止まる、期待した結果にならなかった
のは別にいいかなって思ってる
0813デフォルトの名無しさん
垢版 |
2022/05/28(土) 02:59:44.49ID:j34iIhvZ
エスケープ周りをしくじれば大抵は取り返しが付かないけどな
バッチでエスケープ処理が発生するようなら他のスクリプトを検討した方がいいね
0814デフォルトの名無しさん
垢版 |
2022/05/28(土) 04:29:23.28ID:Ee8LXfQh
タスクスケジューラじゃregを起動できないから、間にbatファイルを挟み、その中でregを指定させたんよね
無事スケジューラの動作が確認できたものの、今度はPC操作中にcmdの起動が挟まってゲームその他の操作を阻害する
瞬間的なcmdウィンドウのポップアップを防ぐ手段はないものだろうか・・・

フリーソフト等にならタスクバー内で完結するプログラム動作も珍しくない、それを通常のcmd起動にも実現させたい^^;
0815デフォルトの名無しさん
垢版 |
2022/05/28(土) 05:13:46.22ID:sY9CTUi4
>>814
ttps://okwave.jp/qa/q852803.html
あとVBから出来たとか昔は出来たけど出来なくなったとか何処かで見た気がす
0816デフォルトの名無しさん
垢版 |
2022/05/28(土) 05:50:05.93ID:Ee8LXfQh
>>814
え・・・ショートカットリンクにすると、bat発動時のウィンドウポップアップは消えるんですか?
発動、実行、処理に問題はありません
指定時刻で瞬間表示されたcmdウィンドウの影響で生じる、PCデスクトップ上の強制画面切り替えが問題なんです・・・
0817デフォルトの名無しさん
垢版 |
2022/05/28(土) 19:57:51.48ID:vVz/heur
>>816
「え・・・」とか言う前にリンク先ちゃんと読んだ?
リンク先に「最小ウィンドウ(バックグラウンド)」で実行できる事は書いてある。
ゲームが影響受けないようになるかは知らない。

タスクスケジューラでの実行でウインドウ出したくないなら
簡単なのはSYSTEMアカウントで実行するように変更すること。
HKCU使ってんなら変更が必要。
0818デフォルトの名無しさん
垢版 |
2022/05/28(土) 20:45:56.96ID:Ee8LXfQh
>>817
的確な指摘をありがとうございます!
SYSTEMアカウントは最初の試行錯誤で試したものの、最上位命令でさえスケジューラの表示で[実行中]となるわりにbatの起動が見られず、その経緯を経てAdministratorsへ変更していました

batのショートカットを作成し、プログラム操作項目に.lnkを足し、さらにアカウントをシステムへ揺り戻すと、確かにcmdウィンドウの起ち上がり消失を確認できました
問題はタスクの表示が[実行されました]ではなく[現在タスクを実行中です]なところ
これが実際にbatを起動してくれているのか怪しいです・・・
もう少し経過観察してみます
0819デフォルトの名無しさん
垢版 |
2022/05/28(土) 20:49:45.87ID:4gWpv+XJ
systemアカウントでの実行だから
逆に現在ログインしてるユーザーの画面に何か表示するようなことは出来ない
batで何か表示しようとしても無理だから起動の確認は後に残るようなファイル出力等で確認
0820デフォルトの名無しさん
垢版 |
2022/05/28(土) 20:51:48.94ID:4gWpv+XJ
これはbatに限らないのでメモ帳とか何かのソフトを起動させても画面には現れない
0821デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:07:54.58ID:Ee8LXfQh
仕組みの解説ありがとうございます
batの起動によりregファイルを実行することが目的ですので、SYSTEMアカウントのそのような仕様は有難いですね
だから各サイトで迷ったらSYSTEMで!と記されているのでしょうか(私も最初はそれに倣って試していました)

5ch掲示板の多くが「余所でやってください」となるので、ついでで恐縮ですが、こちらにコピー↓↓させてくださいm(vv)m
現状ではSYSTEMアカウントのbat強制発動力に疑問を抱くものの、可能なら私もSYSTEMでタスクを構築させたいです
経過観察後はAdministrators最上位でショートカットを指定起動させた場合のデスクトップ周りを検証するつもりです(bat不発かcmd出現になりそう)
------------------
タスクスケジューラでAdministrators+最上位にすると「正しく終了」+準備完了になります
しかしそれをSYSTEM+最上位にした場合、「現在タスクを実行中です」+実行中と変化します

このSYSTEMアカウント処理の際に設定項目の「新しいインスタンスを並列で実行」はどうなるのでしょうか?
実行中を上書き(もう一度プログラム起動)し続けるのであれば嬉しいのですが、並列という語句で「内部に延々と加算し続けるのか?」と不安に思いました
0822デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:31:44.96ID:4gWpv+XJ
>>821
SYSTEMで実行しても実行完了してたら状態は「準備完了」に変わるよ
実行中ならまだそのbatは起動したままで終了してない
もし終了してないのが予期してない動作なら何か途中で止まってるので
複数起動を許可したのならbatのインスタンスが増殖することになる
0823デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:38:44.30ID:4gWpv+XJ
想像するに
batが何かの応答を要求しててユーザーのアクション待ちなんじゃないかな
当然キー入力なんかはSYSTEMからは無理なので
タスクマネージャーから強制終了されることぐらいしかできない
上で言ってるようにカレントユーザーじゃないのでHKCUなんて存在しないんだがその点は大丈夫か
0824デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:47:41.17ID:j34iIhvZ
SYSTEMタスクからHKCUをってことは、まず現在ログイン中のユーザーを特定してそいつのユーザープロファイルのNTUSER.DATを弄ることになるわけだよ
このスレの範疇だと無理っぽいけどがんばってね
0825デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:55:22.65ID:4gWpv+XJ
実行したいユーザーは今の自分なんだからそこは固定にしとけばbatにできるだろ
他ユーザーのレジストリ操作はググれば出てくるよ
0826デフォルトの名無しさん
垢版 |
2022/05/28(土) 21:57:50.03ID:4gWpv+XJ
まあ色々言ったけど
画面表示をさけるだけなら、俺ならWSHかPowerShellを使うな
0827デフォルトの名無しさん
垢版 |
2022/05/28(土) 22:01:28.84ID:o4a1B59x
regファイルを実行ってレジストリ登録?それならbat使わなくても
最上位の特権で実行する
プログラム: C:\Windows\regedit.exe
引数: /s regファイルフルパス名
でよくない?
0828デフォルトの名無しさん
垢版 |
2022/05/28(土) 23:50:47.54ID:Ee8LXfQh
皆さんありがとうございます
やはり表示が「正常に」→準備完了ではない以上、タスクは途中状態でしたか・・・この分では肝心のbatも実行されそうにありませんね

最初のSYSTEMによるタスクの場合、管理者権限での実行に不備があるようで、それでタスクは発動するもののbat動かずという結果になると判断していました
それでAdministratorsへ変更し、命令そのものが管理者によるものへ置き換え、これまでの経緯に至っています

>>827
く、詳しくお願いします・・・自分でも相当な時間をネット検索に費やしましたが実現できませんでした
特に1文字でも損なうと完成されない、引数関連が上手くいかなくて
昔ながらのbatなら自分にもギリ可能でしたので今に至ります
regなら管理者権限も関係なく値を変更してくれるので、それさえ可能なら一番楽なんですよね
0829デフォルトの名無しさん
垢版 |
2022/05/28(土) 23:51:00.59ID:Ee8LXfQh
ことの発端は配信の最適化であるDelivery Optimizationのサービス無効化です
そのサービスの0004化が、batの場合管理者権限必須らしく、batを通常起動しただけではスルーされてしまう
reg単体で行えず(自分は)、管理者権限必須で、それらを自動タスク化した場合が大変でした

該当サービスは100%テレメトリながら、散々な細かい検証をしたもののWU関連を全て止めなければ勝手に手動(トリガー)状態へ強制されます
そしてサービスが手動状態にあるとき、ディスクのクリーンアップ他を少しでも伴うとそこで実行されてしまう
ならばどうせカタログで更新しているし?とWU関連全て無効化したのですが、そうすると今度はエクスプローラーが常時CPU使用率5-10%くらいになり微ラグ
appxのwsappxがC:\ProgramData\Microsoft\Windows\AppRepositoryで無限増殖する現象と似ていますね、こちらも8-10%とゾンビし、WU全無効化のエクスプローラーより酷いラグを発生させる

OSと密接に絡んでいるのは痛感していますが、WUを生かしつつ、元から無効化しているストアに加えて電卓等も捨ててappxサービスを完全無効化(こちらは手動ゾンビなし)
あとは如何にしてエクスプローラーのバグを招かずにDelivery Optimizationの恒久的な完全無効化を成せるか、なんです・・・
0830デフォルトの名無しさん
垢版 |
2022/05/29(日) 00:21:06.26ID:XW+WDPtU
>>811
File4は環境変数の末尾にスペースが入らない&&環境変数をダブルクォートでくくる目的
setに与えるコマンドラインとしては正当だが、&とかエスケープが必要な文字が入ると構文解析で事故るのでFile1と同じくやらんほうがいい書き方だったわ
0831デフォルトの名無しさん
垢版 |
2022/05/29(日) 00:28:55.06ID:NHtpNvxH
>>829
そもそもなんだけど、レジストリを書き替えただけでうまくいくのは確かめてるの?
通常レジストリの書き換えを反映するには、HKCUの場合ログオンが、HKLMの場合再起動が必要なはずだけど
あとユーザーにadmin資格を追加するのは出来ないの
資格があれば最上位の特権にチェックでいけると思うけど
0832デフォルトの名無しさん
垢版 |
2022/05/29(日) 00:44:54.89ID:Dh5s7alL
>>831
長年自分好みのregを作成し続け、発動そのものはパンピーチンパン頭なわりに経験則の積み重ねで上手くいっています
再起動の観点は盲点でした、その辺りも毎回あやふやでしたので再確認しないとですね
regのみでサービスが[無効]へ書き換えられるのを何度か目にしている気もしますが

reg
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc]
"Start"=dword:00000004

bat
sc stop DoSvc
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f

SYSTEM最上位+C:\Windows\regedit.exe /s D:\aaa\bbb\ccc.regで新規タスクを設けたところ、正しく終了し、感触が良さげ
cmdのようなポップアップもありません、この環境で経過観察したいと思います

ただ、今気づきましたが、regは実行中のサービスを止める内容が抜けているので、その線も追加で調べ直します
reg書き込みで駄目ならsc stop特化のSYSTEM最上位batタスクを別途用意する必要がありそうですね
偶然にも、今までの調整が無駄になっていない様子で嬉しいです
0833デフォルトの名無しさん
垢版 |
2022/05/29(日) 01:40:32.51ID:MBI5r2Hn
対象がHKLMならSYSTEMタスクで普通にバッチ呼び出せばいいんじゃないの
っていうかレジストリいじらんでも「sc config DoSvc start= disabled」でいいんじゃないか
0835デフォルトの名無しさん
垢版 |
2022/05/29(日) 07:42:31.92ID:Dh5s7alL
幾つかあるOS連動のサービスは、それぞれで通常と異なる処置が求められるんですよ・・・
Delivery Optimizationもそのひとつ
今のwin10版はギリ対応可能ながらも、win11の現行はバイパスが削除されたり、これまたさらに面倒な様子で将来が不安

最初に書きましたが、SYSTEM最上位の単純な指定ではタスク上で「正常に」となってもサービス側が受け付けなかったんです
ネット情報だとSYSTEMアカウントに管理者権限が内包されているそうなんですけどね・・・
そこで試行錯誤の上、Administratorsで茶を濁していた→またSYSTEMタスクでやったらいいんじゃね?というのは堂々巡りになってしまいますわー

貴重な意見有難うございました
0836773
垢版 |
2022/06/01(水) 01:09:04.33ID:ixkk/oFB
>>775
の続き

7-zip の一時・作業フォルダの指定

Command Line Switches
https://sevenzip.osdn.jp/chm/cmdline/switches/index.htm

-w Set Working directory

例には、-wc:\temp と書いてあるので、-wZ:/rartmp と書けばよい。
注意点として、-wz:/ の、-wとz:/の間に、空白を入れない事

-wだけを指定して、パスを指定しなかった場合、Windows の一時ディレクトリを使用する。
-wを指定しない場合、解凍元のフォルダを使うみたい
0837デフォルトの名無しさん
垢版 |
2022/06/01(水) 06:20:00.46ID:L0Bj7AY3
ウヒ、プヒヒ・・・
reg手段は結局タスク発動のみが空振りするだけで、肝心のプログラムをサービス変更まで繋げることが出来ませんでしたわorz
引数云々の方法や自分が採った記述の成否・不備は定かではありませんが、まあ、涙目
引数の書き方など、ネット上にさえ適切な情報がなくこれは厳しいですな
カリキュラムや資格を取る過程などで自然と学ぶような内容なんですかね・・・そもそもタスクスケジューラへの強い関心が一般的な日本人の中に存在しないらしいです→グーグルロボット検索が拾えるサイトも無い

その涙目でまた振り出しに戻り、システム最上位のbat単純起動からやり直すと、なんと達成(・д・)
システムアカウントに含まれるバックグラウンド動作、最上位に含まれる優先度、そして内包されているらしい管理者権限
regについてもデスクトップから普通にクリックすると再起動無しで値を4へ変更可能でしたので、やはりスケジューラ登録の過程またはサービス仕様に問題があったようですね

何をもって今回、システム最上位が上手く機能したか不思議でなりませんが、そしてこれが今後もしっかり継続的に発動・反映してくれるか分かりませんが、
当面はAdministratorsで生じていた「cmdポップアップによるデスクトップ阻害」を得ることなくタスクが実行でき、サービスの値もきっちり変わり、嬉しく思います
ポップアップさえ無ければ1/1hでスケジューリングし、より高頻度にサービスを強制無効化可能ですので、快適

関連する中で色々と指導して下さった皆さん有難うございましたm(vv)m
0839デフォルトの名無しさん
垢版 |
2022/06/01(水) 09:39:14.46ID:HV/k13ls
質問
PIDが正しいとして taskkill /f /pid "%PID%" が失敗するケースって何かありますか?
現在以下のように書いてるのですが無駄だったらバカ臭いなと
taskkill /f /pid "%PID%" || (
echo エラーメッセージ
echo エラーメッセージ
echo エラーメッセージ
echo hoge.exe を終了汁!
pause
exit /b 1
)
0842デフォルトの名無しさん
垢版 |
2022/06/01(水) 21:11:06.31ID:wWdJLXtL
プロセスは非同期だからエラーよりはkillした後の存在の有無を判定した方がいい
0843デフォルトの名無しさん
垢版 |
2022/06/02(木) 15:41:59.23ID:Bch8jX4P
>>839
プロセス側にも事情があり間に合わないなどでできないことは多い
live2chはkill、確認を数回繰り返してやっといなくなる
0844デフォルトの名無しさん
垢版 |
2022/06/03(金) 03:02:05.90ID:LtGyf47s
ちっきしょーうのAAを貼りたい気分

結局、Delivery Optimizationサービスの0004化はSYSTEM最上位アカウントだとすかしっぺになる
案の定ふりだしやんけwww
なら操作の引数で管理者権限を付与出来ないかと模索するも、ネット情報じゃ無さげ
cmd他、どれもコンテキストメニューなど、OSのUIから指定起動させる例ばかりでコマンド的なものがない
在るとしてもネット上で指南されるような内容ではないらしい

タスク上は「正しく終了しました」が初回のみ出て、それ以降は常に[次回の実行時刻]を更新するのみ=つまり発動さえしていない
該当するプログラム=batを自分でデスクトップから起動→cmd発動でもサービスが変わらず
同条件で右クリ→管理者権限で実行すると余裕の発動・・・

だからそれをタスクのバックグラウンドでやりたいんだよおおおおおおおおおおorz
SYSTEMアカウントはバックグラウンドで動作してくれるけど管理者権限をすかしっぺ、Administratorsアカウントは余裕で発動するけどバックグラウンドじゃない
どうしろっつーねん!SYSTEMアカウントが管理者内包ってのは都市伝説なのかああああ

天才様助けてー!
0845デフォルトの名無しさん
垢版 |
2022/06/03(金) 03:30:52.82ID:X5NsBG94
日記は日記帳へどうぞ

余計な修飾子や個人的感想が多く、読ませる気の無い文章
「わざわざ読んで頂き申し訳ございません」という謙虚さが皆無
長々とおまえの頭悪そうな臭い愚痴駄文を読んでやるほど暇じゃない
質問や説明は具体的、且つ、必要最小限、シンプルに
何なら箇条書きでも良いくらい
言葉は齟齬が生じないよう正確に
「発動」って何やねん
DQN特有の独自定義
まず正しい日本語と用語を学び直せ
0848デフォルトの名無しさん
垢版 |
2022/06/03(金) 05:56:36.90ID:LtGyf47s
>>846
いつも英字でも検索しているんですけど、OS関連は意外に多く抽出されるものの、何故かタスクスケジューラに関してのみ微妙なんですよね・・・
検索ワードがシビアなのか、昨今不評なグーグル検索ロボットの偏向かもしれません
とはいえ2019年10月からガチテレメトリとなったyahooを利用する気にもなれませんし・・・
それだけ世間的な意味でタスクに関心がないのだと思いますorz

百歩譲って、system最上位アカウントに管理者権限を強制付与出来ればいいんですが
引数もタスクのようなbatに対したコマンドではなく(そもそもタスクの引数に関する指南が超少ない)、batの中で特定のプログラムを管理者権限で実行する方法ばかり見つかって意味無し

自分がデスクトップ上の右クリでbatを直接管理者権限実行させ、サービスの値が0004の状態はsystem最上位アカウントでも定刻の1時間刻みで「正常に終了」となる
0004を0004に上書きするbat(笑)は管理者権限の壁が無いようだw
この場合は次回の予定のみが更新されることもなく、しっかりと前回の実行結果を残す(1時間刻みで)

それが!WUか何かのOS強制により手動(トリガー)と改変されたとき、system最上位アカウントではフリーズしてしまう様子なんですよねorz
何なんだよ[配信の最適化]ゾンビ・・・ほんまキモいわ・・・
0849デフォルトの名無しさん
垢版 |
2022/06/03(金) 06:25:04.10ID:25hReR0t
文章力皆無なのに自分ではちゃんと書けてるつもりなんだろうなぁ・・・ほんまキモいわ・・・
0851デフォルトの名無しさん
垢版 |
2022/06/03(金) 08:41:36.30ID:r3SSykMX
お前の書いていることが省略しすぎたり独自用語か混ざってたりで読むのに疲れる
書いてることからやりたいことの確認をしなきゃいけないし

> Delivery Optimizationサービスの0004化
特定のサービスの挙動を変えたいor止めたいらしいのがググってようやくわかった
0004が何を示してるか未だにわからん

> なら操作の引数で管理者権限を付与出来ないかと模索するも、ネット情報じゃ無さげ
> cmd他、どれもコンテキストメニューなど、OSのUIから指定起動させる例ばかりでコマンド的なものがない
ここでのお前がやりたいことは管理者特権を付与してコマンドラインを実行したい」でいいんだよな?

> タスク上は「正しく終了しました」が初回のみ出て、それ以降は常に[次回の実行時刻]を更新するのみ=つまり発動さえしていない
イベントビューアーで確認したんか?サービスの動作ログだよな?
0852デフォルトの名無しさん
垢版 |
2022/06/03(金) 08:52:40.64ID:rHBirywu
cmdに管理者特権とかいう概念はないのでpowershellを経由するしかない。runasでググれ。
プロセスが管理者特権で動いているかはタスクマネージャーから確認できる(表示列を追加する必要があるが)

サービス関連は触ったことないから知らんが、cmdでいくら探してもないならpowershellから動かすしかないんじゃない?
0853デフォルトの名無しさん
垢版 |
2022/06/03(金) 10:14:29.24ID:84QuKkvW
そもそもの方法論がもうね
そこまでバカでそこまで必死なんだったらローカルグループポリシー使えよっていう
HomeならPro化すればいいだけなんだから
0854デフォルトの名無しさん
垢版 |
2022/06/03(金) 10:34:45.22ID:CIdSIcJr
動詞を指定して実行する事は他の言語でもできるけど、
powershell程には簡潔に書けないからね
0855デフォルトの名無しさん
垢版 |
2022/06/03(金) 10:42:06.97ID:CIdSIcJr
ちな0004はREG_DWORDの値4で場所的にそのサービスの無効を意味してる
こういうの知らないなら何のこっちゃだろうな
0856デフォルトの名無しさん
垢版 |
2022/06/03(金) 10:52:22.42ID:CIdSIcJr
一見高度な事の様で大した中身でもなく、文体が気持ち悪いから知ってる人がいてもスルーされる。
案の定相手にしてるのはルビキチだけ
0857デフォルトの名無しさん
垢版 |
2022/06/03(金) 14:11:38.16ID:LtGyf47s
くっそワロた・・・
0004さえも理解に乏しい、知識量や発想力の人達へ向けて私は質問していたのだろうか^^;
runasなどもとっくに調べているし、グルポは超初期に実行済みで、Delivery Optimizationは突破してくるから今日に至っている話なわけで

こういうのも過去に書いているんですけど、虫食いで読んで適当に回答している方や、そもそもの知識量・発想・知能的な面で素人の私より劣っていそうな人が
いえ、これ以上は暴言になりそうですし省略しますわ
・・・バッチ専用スレとのことで、私も皆さんへ過大評価や虚像を抱いていたのかもしれません

powershell、完全に時代錯誤な私の知識・技量では厳しかったものの、これを機に学んでみましょうかね
batの代わりにps1か・・・自分に使いこなせるか不安ですorz
皆さん数々の意見を有難うございました
0858デフォルトの名無しさん
垢版 |
2022/06/03(金) 14:54:57.72ID:oCwyAce/
ごめんあんまり読んでないんだけど、対話が求められて自動化できない?のならdoskeyのマクロは試した?
GUIでのダイアログだったら無理だけど
0859デフォルトの名無しさん
垢版 |
2022/06/03(金) 16:20:46.55ID:gMGR7N6s
そもそも対象のサービスが無効にできない (ようにみえる) 類のものなのではないか?
0860デフォルトの名無しさん
垢版 |
2022/06/04(土) 00:01:31.51ID:qz14Jeu3
AWS の本にも、Windows サーバーの記述は、1% ぐらいしかない。
システムで、Windowsを使う香具師がいない

ファイル共有・Active Directory・タスクスケジューラ・Remote Desktop、
バッチ・コマンドプロンプト・PowerShell ぐらいが、簡単に紹介されているだけ

ほとんどがDocker を使う。DockerはLinuxの技術。
だから、Windows 10のWSL2 で、Linuxを使えるようにしている
0864デフォルトの名無しさん
垢版 |
2022/06/04(土) 15:01:48.75ID:M0jEQKIa
ID:LtGyf47s みたいに要点を簡潔にまとめられず矢鱈とグダグダ書いちゃう人って何かそういう頭の障害でもあるの?
言葉遣いも変だし外国人なのかな
0867デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:11:33.95ID:qkG/5q2Z
以下のようにUNIXライクにFILESをパイプしてfindstrコマンドに渡すことは不可能でしょうか?

@echo off
setlocal enabledelayedexpansion
set LF=^

for /f "tokens=* delims=" %%x in ('dir /w') do set FILES=!FILES!%%x!LF!

@rem ↓FILESをパイプにしてfindstrコマンドの入力にしたい
for /f "tokens=* delims=" %%x in ('echo !FILES! ^| findstr "Siki"') do set TEST=%%x

pause
endlocal
exit /B 0
0868デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:16:36.89ID:GjOGWrlu
不可能です
0869デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:31:41.95ID:qkG/5q2Z
不可能とのことなのでファイルに一旦出力することにしました

@echo off

setlocal enabledelayedexpansion
set LF=^


for /f "tokens=* delims=" %%x in ('dir') do set FILES=!FILES!%%x!LF!
echo !FILES! > aaa.txt

for /f "tokens=* delims=" %%x in ('type aaa.txt ^| findstr "Siki"') do set TEST=%%x

echo %TEST%

pause

endlocal
exit /B 0
0871デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:38:08.89ID:qkG/5q2Z
本当にやりたかったことは

curlコマンドで某APIでJSONデータ取得
JSONデータをjqコマンドで値取得
取得した値からfindstrコマンドで余計な行を除去

としたかったのですが、某APIが叩ける回数が限られているため
JSONデータを取得する回数を抑えるために一旦配列として保持したかったのです
0873デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:49:52.57ID:qkG/5q2Z
>>872
実はやりたいことがこれ以上の事は無いのでバッチレベルで可能だろうと思ったのですが
配列?の使い方がよく分からず質問しました
ひとまず一時ファイル出力して使いまわす形にしようと思います
ちなみに某APIとはスマートリモコンNature Remoの事です
0875デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:59:09.92ID:NvGIH30g
判断のポイントはクッソ不便なbatを捨ててだいぶマシなpsに以降する時期をいつまで先延ばしにするかだけだと思う
0876デフォルトの名無しさん
垢版 |
2022/07/09(土) 18:59:46.81ID:qkG/5q2Z
時間ある時に勉強してみたいと思います>PowerShell
ググったらWin7時代から標準であってOSSになっててLinuxでも実行可能とか知りませんでした
割と長く銀行系にいるので頭が古いんでしょうね…
0877デフォルトの名無しさん
垢版 |
2022/07/09(土) 20:00:42.46ID:al4zTytR
Ruby では、外部コマンドのcurl を呼び出さなくてもできる

require 'open-uri'
require 'json'

url = 'http://〜' # URL

uri = URI.parse( url )
p obj = JSON.parse( uri.read ) # response body

例えば、外部コマンドのcurlを呼び出して、スクレイピングするなら、

require 'nokogiri'

command = `curl #{ url }`
html = `#{ command }`

doc = Nokogiri::HTML( html )
0878877
垢版 |
2022/07/09(土) 20:05:46.69ID:al4zTytR
>>877
修正

>command = `curl #{ url }`
command = "curl #{ url }"
0879デフォルトの名無しさん
垢版 |
2022/07/09(土) 21:46:59.61ID:3uODqf9z
setlocal enabledelayedexpansion
set A0=
set i=0
for /f "delims=" %%a in ('dir /b^|findstr "Siki"') do set "A!i!=%%a" &set /a i+=1
if not defined A0 echo Not found.&pause&exit /b
set /a i-=1
for /L %%i in (0,1,%i%) do echo A%%i = "!A%%i!"
pause
0880デフォルトの名無しさん
垢版 |
2022/07/21(木) 23:21:25.81ID:3neYOO2a
set /a の結果とか与えた数値を16進表記に変換するコマンドか何か良い方法があったら教えて欲しいです
0889デフォルトの名無しさん
垢版 |
2022/07/22(金) 13:09:13.02ID:ZzUgbaoD
わざわざバッチでやるってことを理解してないアホがいる
pythonでも入れてろゴミ
0891デフォルトの名無しさん
垢版 |
2022/07/22(金) 15:55:27.20ID:bfkyQVXg
>>885 はバッチだけだよ
もし桁数が多いのをやりたいなら
過去のスレを探したらバッチがあるよ
0892デフォルトの名無しさん
垢版 |
2022/07/22(金) 18:11:09.86ID:5WL5LWhS
set /a n=1194684
if "%n%"=="0" set "r=0" &goto :END
setlocal enabledelayedexpansion
set HEX=0123456789abcdef
set /a "a=n&0xf, b=n>> 4&0xf, c=n>> 8&0xf, d=n>> 12&0xf, e=n>> 16&0xf, f=n>> 20&0xf, g=n>> 24&0xf, h=n>> 28&0xf"
set r=!HEX:~%h%,1!!HEX:~%g%,1!!HEX:~%f%,1!!HEX:~%e%,1!!HEX:~%d%,1!!HEX:~%c%,1!!HEX:~%b%,1!!HEX:~%a%,1!
:DEL_PADZERO
if %r:~0,1% equ 0 set "r=%r:~1%" &goto :DEL_PADZERO
endlocal &set r=%r%
:END
echo 0x%r%
pause
INT32の範囲で良いならバッチではこういうバカっぽいのが結局1番速いんじゃね?
レスアンカーが多過ぎと怒られたから右シフトの右にsp入れてる
0893デフォルトの名無しさん
垢版 |
2022/07/22(金) 19:27:14.02ID:bfkyQVXg
話変わるけど右シフトのすぐ右の数字は危険だよね
アンカーに解釈されるので2chで数値が変わる場合があるんだよ
0894デフォルトの名無しさん
垢版 |
2022/07/22(金) 22:42:20.46ID:AXmcGRlR
>>885,886,892
ありがとうございました
powershellは2回目以降だとそんなでも無いですが初回はどうしても遅くなるみたいですね

>>881-884
readline5.dll というのを落としてbcと同じ場所に置くことで動きました
日本語ヘルプ(https://linuxjm.osdn.jp/html/GNU_bc/man1/bc.1.html)が凄く助かりました!
echo sqrt(2) | bc -l
echo scale=10; 4*a(1) | bc -l
とかバッチに無い計算が出来て感動。面白かったのですがパイプで式を渡す時""で括れないので^&|などのメタ文字を
echo 8^^^^2 | bc
echo 8^^^&^^^&2 | bc
とか^エスケープしなければならないのが使いにくいのと
scaleで小数点以下桁数指定出来るのは良いのですが最下桁が四捨五入でも切り捨て切り上げでも無く変な値になったりとかが
惜しい感じですね
エスケープはファイルにして読ませれば良いし最下桁は自力で切り捨てれば良いだけですのでいずれ何かで役立つかも
ありがとうございました
0895デフォルトの名無しさん
垢版 |
2022/07/23(土) 09:18:41.04ID:WQSCizyX
エスケープは入力要求メッセージ(末尾改行無し)を使って回避する方法がある。
<nul set /p "=8^2" | 〜
※もし行(末尾に改行)が必要なら
<nul set /p "=8^2" | more | 〜
0897デフォルトの名無しさん
垢版 |
2022/07/24(日) 07:30:05.93ID:oa53tMxs
>>895
目からウロコなTips
set /p <nul="8^2" | more | bc
で行けました
moreの代わりにfindやfindstrなどパイプで受け取って改行付加して吐けるコマンドなら使えるっぽい。他には以下とか
(set /p <nul="8^2"&echo=) | bc

set /p の改行無しecho の用法は知っていたんだけどこの局面で使える事に思い付けなかったのが悔しい
0899デフォルトの名無しさん
垢版 |
2022/08/14(日) 12:49:48.16ID:WvMv+Qf8
nslookup … DNSで調べる
ping … hostsとか諸々込みで実際にどう名前解決されるか
nbtstat … NETBIOS名なら
netstat … 通信で実際に使ってる自端末と相手のIPアドレス
ipconfig … 自端末の諸々
netsh … 自端末の諸々
0900898
垢版 |
2022/08/14(日) 18:43:42.99ID:0tA/3KXA
各コマンドのヘルプ見たり試してみたけど良く分からなかった
WAN側IPとそのホスト名をコマンドから知れないか?を知りたかったんだけど無理そうですか?
nslookupで引数にIP指定すればホスト名は取れるんだけどIPをどうやって知ったら良いものか
0901デフォルトの名無しさん
垢版 |
2022/08/14(日) 19:35:36.51ID:R62l2k+7
>>900
状況がよくわからん
「WAN側IP」とか言ってるから自宅(自社)のルーターを自宅(自社)のLAN側から知りたいという話?
0902デフォルトの名無しさん
垢版 |
2022/08/14(日) 19:37:41.23ID:WvMv+Qf8
インターネット上の相手側から見える、自WANのWAN側IPアドレスって事?
例えば自端末がオンラインゲームのホストになる際に相手に教えるIPアドレス。

WAN側機器のWeb管理コンソールとか、
「診断くん」等のWebサービスをスクレイピングすればいいよ。
探せばAPIサービスなんかもあるかもね。
※Webサービス使うときは利用規約をよく読んでね。

既にIPアドレス知る方法を1つは知ってるようだから、その方法でもいいよ。
0903デフォルトの名無しさん
垢版 |
2022/08/14(日) 19:49:12.00ID:3lHTKQ6A
ホスト名とは何かという定義が必要だな

WEBサーバーなら複数のホスト名(URLのドメインパート)で同じ(時には複数の)サーバーに接続する
https://5ch.net/でアクセスされるサーバーなら 5ch.net がホスト名だが
同じサーバーが他のドメインもホストしているなら、他のホスト名も持っていることになる
あるサーバーが、接続され得るすべてのホスト名を知りたいと思っても、それは世界中のDNSの勝手なの、
漏れなく調べるためには、世界中のすべてのドメインのレコードを調べる必要があるので、実際には無理。

DNSの逆引きは、それを設定している人が必要な分を登録しているだけなので、すべてとは言い切れない。
0904デフォルトの名無しさん
垢版 |
2022/08/14(日) 20:04:12.33ID:zcJ+8Zbe
>>900
現在接続形態で多いのが、ルータの下にローカルネットワークでPCが繋がっているというもの
この場合、PCからはローカルネットワークが全てでありIPアドレスもローカルIPアドレスが使われる
グローバルWAN側のIPアドレスを知りたいのなら
ルータにログインしてアクセスして情報を貰うか、
webのIPアドレスを教えてくれるサイトから情報を取ることになる
つまり>>902の言うとおり
0905デフォルトの名無しさん
垢版 |
2022/08/14(日) 20:07:44.49ID:0tA/3KXA
そうです。自分のインターネット側のIP
ルーター管理画面のWAN側IPです
これをコマンド(LAN側のマシン)から調べる方法が無いのかなって
> Webサービスをスクレイピング
これってコマンドでやる方法あります?
NECのなんですけどルーター管理画面から取れるのかな?
ちょっとググったりしてみましたけど簡単なバッチくらいしか使えない自分にはハードル高いかも
0906デフォルトの名無しさん
垢版 |
2022/08/14(日) 22:44:27.94ID:zcJ+8Zbe
>>905
curl.exeを持ってこないといけないけど
診断君のスクレイピングだと
@echo off
curl.exe http://taruo.net/e/ -s -o "res.tmp"
for /f "tokens=*" %%i in ('findstr "<TD><tt>" res.tmp') do set host=%%i&goto :get_ip
:get_ip
for /f "skip=1 tokens=*" %%i in ('findstr "<TD><tt>" res.tmp') do set ip=%%i&goto out
goto :eof
:out
for /f "delims=<> tokens=3" %%i in ("%host%") do set host=%%i
for /f "delims=<> tokens=3" %%i in ("%ip%") do set ip=%%i
set ip=%ip:~0,-2%
echo HOST NAME = %host%
echo IP ADDRESS = %ip%
0907デフォルトの名無しさん
垢版 |
2022/08/14(日) 22:55:35.81ID:zcJ+8Zbe
>>905
何も要らないが、powershellを使わないといけない
(なおwebアクセスで診断君以外ではtls1.2を有効にしないとダメなことが多い)

$res = wget http://taruo.net/e/
if ($res.content -match "REMOTE_HOST<\/TD>\n<TD><tt>(.+)<\/tt>[\s\S]+?REMOTE_ADDR<\/TD>\n<TD><tt>([.\d]+)" ) {
$host_name = $matches[1]
$ip_address = $matches[2]
}
$host_name
$ip_address
0908デフォルトの名無しさん
垢版 |
2022/08/15(月) 00:00:17.27ID:xwOg3pSS
>>906-907
ありがとうございます
curl.exe はなぜか 7.55.1.0 が system32に入ってました
参考にルーター管理画面から取得出来ないか試して無理だったら使わせて頂きます
0909デフォルトの名無しさん
垢版 |
2022/08/15(月) 02:02:49.45ID:xwOg3pSS
お陰様でコマンドから確認出来るようになりました。この度は本当にありがとうございました
for /f "skip=301 tokens=4 delims=< " %a in ('curl http://admin:admin@192.168.0.1/index.cgi/info_main_set -s') do (for /f "skip=3 tokens=2" %b in ('nslookup %a') do @echo %b)&pause

pauseからCtrl+Cで止めているのですが、breakはバッチでgotoしないと無理ですよね?
0911デフォルトの名無しさん
垢版 |
2022/08/15(月) 21:05:50.46ID:Z47lvB2J
>>909
breakしたい、というか302行目だけ欲しいってことかな。
findstrで行番号振って、さらにfindstrで目的の行だけ取るって方法があるよ。

for /f "tokens=4 delims=< " %a in ('curl 〜 -s^| findstr /rn /c:"^"^| findstr /r /c:"^302:"') do
0912デフォルトの名無しさん
垢版 |
2022/08/16(火) 15:31:14.62ID:RClv+rPW
>>911
for /f "tokens=5 delims=< " %a in ('curl http://admin:admin@192.168.0.1/index.cgi/info_main_set -s ^| findstr /n "^" ^| findstr "^302:" ') do for /f "tokens=2" %b in ('nslookup %a ^| findstr "名前 Name"') do echo %a : %b

ありがとうございます。Ctrl+C する必要無くなりました
skip=301付けたままのうっかりミスのせいで上手く動かない原因を文字コードがEUC-JPだからfindstrが機能しないのだと勘違いし文字コードを変換する外部ツールnkf.exe入れたり明後日のことしてハマってました
目的が何行目か決まっている時は最良の方法かもですね
行番号列挙する必要がありますが複数行でも使えますし
0913デフォルトの名無しさん
垢版 |
2022/08/27(土) 21:14:13.99ID:S8eeCUJc
文字列の入った変数から、その文字数を高速に取得したいんですが
なにか良い方法はありますか? 上限は8189です
0914デフォルトの名無しさん
垢版 |
2022/08/27(土) 22:59:03.27ID:OpG+r6e/
if "%s:~4095,1%"=="" (4095文字より少ない) else 4095文字よりも多い

:4095未満
if "%s:~2048,1%"=="" (2048より少) else 2049以上4095未満

:4095以上
if "%s:~7042,1%"=="" (4095以上7042未満) else 7042以上

こんな感じでifを入れ子にでもサブルーチンにでもしてある程度どの範囲にあるか詰めてからカウントすれば?
8189文字で正常に動くかは忘れた分からん
カウントは 遅延展開で if "!s:~%N%,1!"=="" って感じで Nを+1してループさせればいい
0915デフォルトの名無しさん
垢版 |
2022/08/27(土) 23:07:32.10ID:S8eeCUJc
>>914
ありがとうございます。参考にさせていただきます
ちなみに8189はcmdの仕様による限界です
0917デフォルトの名無しさん
垢版 |
2022/08/27(土) 23:24:42.08ID:OpG+r6e/
setだかcmdの構文解析だかの引数の文字数上限が8191 (0x1fff) とかで "s=" で2文字必要だから8189とかだったかな
変数名が単一文字で無かったり "" で囲ったりしても使用可能文字数減るはずだし
forやifの中で展開出来なかったりしたと思うから
限界探るなら一見使えているように見えてもちゃんと確認しといた方が良いよ
0918デフォルトの名無しさん
垢版 |
2022/08/27(土) 23:49:06.77ID:OpG+r6e/
4096 -> 2048 -> 1024 -> 512 -> 256 -> 128 -> 64 -> 32
if で8回くらい判定させればそれなりに速く出来ると思う
256分割。。
オフセットも変数にしてループするとか
512で真だったら /2 偽だったら *1.5 (set /a N=N/2+N) てな感じで
0919デフォルトの名無しさん
垢版 |
2022/08/28(日) 00:01:54.99ID:hYNZdTyV
>>913
set s=abcdefg
setlocal enabledelayedexpansion
set n=0 & if defined s (set /a "n=1<<13"
for /L %%i in (12,-1,0) do (set /a "a=n-(1<<%%i)"
for %%j in (!a!) do if "!s:~%%j,1!"=="" set n=!a!))
echo !n!
0920デフォルトの名無しさん
垢版 |
2022/08/28(日) 00:18:39.63ID:8DkHE3ui
なるほどなー
set n=!a! や set /a "a=n-(1<<%%i)"
これがパッと出て来るなんて頭良いですね
0921デフォルトの名無しさん
垢版 |
2022/08/28(日) 10:26:23.19ID:+w1wfoOM
たとえばファイルサイズを
%~z1 でなくfilename.sizeみたいなわかりやすい書き方に
する方法はないですか
0922デフォルトの名無しさん
垢版 |
2022/08/28(日) 10:36:37.74ID:FcIb+N5t
バッチファイルにわかりやすい書き方なんてものがあったら、俺の髪はもっと残ってた
0923デフォルトの名無しさん
垢版 |
2022/08/28(日) 11:08:55.91ID:CaouF0NP
バッチの基本的な考え方としては基本コマンドにこだわらず外部コマンドを呼ぶことだと思う
セキュリティ的に外部コマンドは入れられないといった制約があるならこのレガシーツールを使い続けるのは無理がある
現実解のひとつはPowershellのワンライナーを呼ぶことで
そうやって少しずつ学んでるうちに段階的にbatを卒業することだと思う
0924デフォルトの名無しさん
垢版 |
2022/08/28(日) 11:23:21.78ID:+w1wfoOM
>>923
ありがとうございます
やはり無理なのか、aliasesなどを使った名案があればいいのに
Powershellはコマンド名が長すぎて使う気になれない
外部コマンドやツ-ルを使えば簡単でもセキュリティ的に問題があるかわからないので使いたくない場合がある
0925デフォルトの名無しさん
垢版 |
2022/08/28(日) 11:41:21.61ID:3aiLuiYL
エイリアスもどきはあるよ
マクロファイルに定義を書いておいて一斉に登録することもできる
doskey /?
あとpowershellにはエイリアスがある
0926デフォルトの名無しさん
垢版 |
2022/08/28(日) 15:23:54.30ID:CaouF0NP
Powershellは単に慣れと食わず嫌いの問題やね
cmdも無数の気持ち悪いルールがあるし現にたかが文字を数えるだけで呪文めいたコードが必要になってる
何にせよ人間慣れれば気にならなくなるもの
さすがにあと5年で定年だからプログラミングしなくなりますなんて老人には勧めんけどね
コマンドの長さとエイリアスについては
俺はGet-ChildItemはダルいからdirやlsと書くし
ForEach-Objectの代わりに%と書き続けてる
0927デフォルトの名無しさん
垢版 |
2022/08/28(日) 15:36:49.18ID:3aiLuiYL
powershellの弱点は初期起動に時間が掛かるという点だね
通常的にpowershellを使ってるならいいけど、
それこそ特定の処理だけたまに使うという人にはそこがネックになる
そういう場合はもうオブソリュートだがWSHがいい仕事をする
0929デフォルトの名無しさん
垢版 |
2022/08/28(日) 19:39:30.66ID:TtkhtxSa
底辺ドカタがアイデンティティ護ろうと必死だけど必死に見られたくない虚栄心とのせめぎ合いが垣間見えてワラw
0931デフォルトの名無しさん
垢版 |
2022/08/29(月) 03:05:26.48ID:Rm8LZ6WJ
>>924
ほんとはvbsが起動も速度も速い上にバッチやps程変な癖もなくていわゆるVB脳程度の知識でそこそこのものが手軽に書けるんだよ
ただこの板にあるスレが一言で言えば気持ち悪いから誰も触れないのよ
よくvbsはオワコンて言われるけど少なくとも2029年までは標準で使えるから安心していいよ
0932デフォルトの名無しさん
垢版 |
2022/08/29(月) 04:54:03.93ID:DAjO1ugz
@echo off &setlocal
call :LEN
echo %errorlevel%
call :LEN a
echo %errorlevel%
call :LEN ab
echo %errorlevel%
call :LEN abcde
echo %errorlevel%
call :LEN "abcdefg"
echo %errorlevel%
pause &exit /b

:LEN
setlocal enabledelayedexpansion
set "s=%~1"
if not defined s goto :EOF
set /a "n=8192" &rem "1<<13"
for /L %%i in (12,-1,0) do set /a "a=n-(1<<%%i)" &echo n:!n!, a:!a! &for %%j in (!a!) do if "!s:~%%j,1!"=="" set n=!a!
exit /b %n%

>>919 さんのこれ凄いね
関数っぽく使えるようサブルーチン化と変数確認のechoさせてみたけど
バッチでの文字数カウントとしては最強じゃね?
0933デフォルトの名無しさん
垢版 |
2022/08/29(月) 07:10:34.83ID:ZvttE7Ov
変数に代入出来るのが8000でも
set/pで入力出来るのは1000ほどしかないな
文字数が多いと色々と落とし穴ありそう
0934デフォルトの名無しさん
垢版 |
2022/08/30(火) 16:27:10.19ID:2X2Lv8NW
>>932 更に分かりやすくしてみた
for /L %%i in (12,-1,0) do set /a "b=1<<%%i, a=n-b" &set /p<nul="a:[!a!] = n:[!n!] - (1<<%%^i:[%%i]):[!b!] " &for %%j in (!a!) do if "!s:~%%j,1!"=="" (set "n=!a!" &echo 文字:無い) else echo 文字:在る
0936デフォルトの名無しさん
垢版 |
2022/08/30(火) 23:17:38.91ID:+Bm8wCSm
素人なんだけど >>919 みたいなのってプログラマだったら知っていて当然の定番のロジック?アルゴリズム?だったりするん?
0937デフォルトの名無しさん
垢版 |
2022/08/31(水) 00:08:53.66ID:F2h2Wpm0
>>936
やってることはただの2分探索だよ
アルゴリズムの本とか一通り読んでれば思いつくよ
特にシフト使ったちまちましたことは組み込みプログラマが得意だろう
0938デフォルトの名無しさん
垢版 |
2022/08/31(水) 05:05:19.96ID:I3t0py3T
>>936
アルゴリズム自体はまあ知ってて当然レベル
それをバッチで実装するのはなかなか凄いと思う
0939デフォルトの名無しさん
垢版 |
2022/08/31(水) 06:19:56.53ID:IktOvXlL
個人的にはforの入れ子がおもしろい。そんな方法があるのかと思った。
普通そこはcallを考えるけど、そうすると速度が落ちるのかな
0940デフォルトの名無しさん
垢版 |
2022/08/31(水) 20:20:14.08ID:TgQJCwr4
言語にっよっては文字数を数える関数とかがあるけど、こういう手法を駆使してるん?
0942デフォルトの名無しさん
垢版 |
2022/08/31(水) 23:00:05.56ID:dYVvh+jC
>>940
頭から数えるか、文字列型に文字数の情報も持たせてる
x文字目を1文字切り出して有るか無いかっていうのは結局言語側で文字数わかってないとだめなわけで
0943デフォルトの名無しさん
垢版 |
2022/08/31(水) 23:03:12.74ID:FwIzrDsl
可変長の文字コードが一般的だから、先頭から数えないと文字数はわからない
0944デフォルトの名無しさん
垢版 |
2022/08/31(水) 23:25:40.84ID:8OAd82SA
942の言う通り言語や型によっては文字数を予め持たせてるよ
最初に一度だけカウントしてメモっておけば何度も数え直す必要がない
0945デフォルトの名無しさん
垢版 |
2022/08/31(水) 23:41:16.72ID:IktOvXlL
C言語のstrlenだと単純に先頭から0を探すだけ
末尾以降のメモリは0とは限らない。ゴミだらけ
0947デフォルトの名無しさん
垢版 |
2022/09/01(木) 10:54:06.41ID:KDf3jCCr
たぶんだけど
内部表現がUTF-8みたいな可変長(Perl等)ならバイト数じゃなくて文字数で持ってると思う。
内部表現がUTF-16みたいな固定長(.NET等)でバイト数÷2が文字数になる言語だと、
「取得毎に÷2(右シフト)の負荷」をとるか
「常に文字数保持のメモリ消費」をとるかは言語による気がする。※まあ後者かな。
0951デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:31:17.40ID:EyFcbtIt
初心者です
[曲名].mp3 の様に
曲名をカッコで囲んでファイル名を出力する方法はどうしたらよいのでしょうか?
-o "%%(title)s.%%(ext)s"
ここの()を[]に変えてもダメでした
お時間ある方いらっしゃいましたらよろしくお願い致します。
0953デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:37:30.33ID:EyFcbtIt
952さん
教えてくれてありがとうございます
失礼いたしました
0954デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:41:09.20ID:EyFcbtIt
教えて頂いた所は書き込みできませんでした><;
0956デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:52:40.78ID:EyFcbtIt
599さん出来ました♪
親切に教えてくれてありがとうございました
感謝です(*- -)(*_ _)ペコリ
0957デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:53:42.59ID:EyFcbtIt
955さんでした...ごめんなさい
0958デフォルトの名無しさん
垢版 |
2022/09/01(木) 21:32:28.04ID:P4dKpTai
文字列処理は、Ruby で書いて、
コマンドプロンプト・Power Shell から呼び出す

これが間違いない。
バグる事もない

日本の人工衛星でも、文字列処理の部分を組み込みのmruby で作ったりする。
こういう処理をCで作ると、ややこしくてバグるから

VBS, WSH のピッコロ大魔王は、すごい技術者だよ。
スクレイピングでも、Rubyのクラス・モジュールみたいに、VBScript で作ったりする

VBS から、.NET とか呼び出せるのか
0963デフォルトの名無しさん
垢版 |
2022/09/03(土) 13:13:17.18ID:JK72C2wT
mp3をダウンロードして128kにするバッチファイル教えてもらえませんか?
yt-dlpとffpmeg使って色々と試してみてもうまくいきません
ダウンロードしたあとでしたら名前が分かるのでこれで出来たのですけど
ffmpeg -i input.mp3 -vcodec copy -ab 128k output.mp3
0965958
垢版 |
2022/09/03(土) 15:43:23.43ID:X5iiwVOT
>>960
ただし、Python, Ruby などのウェブ系言語は、
インターネット・Linux・UTF-8 用に作られているので、
Windows・shift-jis(CP932)の日本語でバグるかも

だから、Linux用のソースコードを、
MSYS2/MinGW でコンパイルして、Windows用にしたものよりも、
WSL2 で、Linuxを動かしたものの方が安全

これは、UTF-8をCP932に変換せず、そのままUTF-8を使っているから安全

漏れが作った感想では、PowerShell, VBScript よりも、
圧倒的に、Rubyが作りやすい。
Rubyの方が、本なども多いし
0968デフォルトの名無しさん
垢版 |
2022/09/11(日) 18:11:08.37ID:sXKbUVWc
パイプから文字列受け取ってsetする方法って
echo a|for /f %%a in ('more') do set a=%%a
みたいにforでやるか一旦ファイルに書き出すしか無い?
echo a| set /p a="" <pipe
みたいにリダイレクトに繋げてくれるかパイプで流れてくるものに%$_%とか一時変数っぽいものに割り当ててくれたら良いのに
rg.exeが便利すぎて遊んでてふと思った
0970デフォルトの名無しさん
垢版 |
2022/09/13(火) 10:43:09.25ID:C/JjoHd5
文字コードの問題なら
一旦nkf32でも中継させて文字コード変換して読み直すとか?
0971デフォルトの名無しさん
垢版 |
2022/09/13(火) 13:50:58.24ID:8ckY0WFW
chcp 65001
して全部 utf8 でやっちゃう
utf8 のバッチファイルで行末が2バイト文字だとエラーに
なるんで、そういうのは行末に . とかで回避
0972デフォルトの名無しさん
垢版 |
2022/09/13(火) 19:02:32.59ID:BFM47HY2
>>970
試してみたら行けました
でも入力を指定出来ないのがちょっと不安、と思っていたら期待される入力のオプションありました
現状それしか無いかもですね
rgを多段に使う場合は最初と最期だけ変換すればrgの-Eオプションも省けて良いかも
でも手軽さにケチ付いたみたいなのが引っかかります。。

>>971
utf-8だと機能しないコマンドもあるのでその確認がちょっと大変です

お二方ともレスありがとうございました
0974デフォルトの名無しさん
垢版 |
2022/09/14(水) 02:23:02.40ID:ifExYD0i
分かっていると思うけど
nkf等で変換しても変換不可の文字が欠落するので注意
0975デフォルトの名無しさん
垢版 |
2022/09/14(水) 02:38:59.13ID:d7brrjLd
えっ?いや全然分かってないです
sjis → utf-8 → sjis
で欠落する文字って在るのでしょうか?
半角カナはxオプションで維持可能でした
0978デフォルトの名無しさん
垢版 |
2022/09/14(水) 09:45:41.31ID:bQ7RTOjb
コンソールアプリでパイプの時点で色々諦めなきゃね
rg.exeとやらはwinforms版はないの?オプソだよね?
0979デフォルトの名無しさん
垢版 |
2022/09/14(水) 18:03:36.58ID:XL8H98jz
完璧版nkfとは、どのようなものになるのでしょうか?
UTF-8、UTF-16対応?
文字コードによって存在する文字(というかコード?)にどう対応すればよいのでしょうね?
0980デフォルトの名無しさん
垢版 |
2022/09/14(水) 18:24:17.06ID:RZxozk25
フォルダ a:\xxx を
a:\yyy の下に移動して
a:\yyy\xxx とするのはどうやりますか?
0984デフォルトの名無しさん
垢版 |
2022/09/14(水) 20:02:13.40ID:XL8H98jz
次スレを立てて見ようと思います。
失敗したら、あとのかたお願いします。
0987デフォルトの名無しさん
垢版 |
2022/09/14(水) 22:44:29.10ID:XL8H98jz
rem フォルダyyyが無い場合、フォルダyyyを作成。

md a:\xxx\yyy

rem フォルダxxx下にファイルが有る場合。

move a\xxx\*.* a:\xxx\yyy
0989デフォルトの名無しさん
垢版 |
2022/09/15(木) 07:10:21.66ID:PHto6B20
md a:\yyy
if not exist a:\yyy\xxx (move a:\xxx a:\yyy) else (
if exist a:\yyy\xxx\nul (
move /-y a:\xxx\* a:\yyy\xxx
for /d %%i in (a:\xxx\*) do move "%%i" a:\yyy\xxx
rd a:\xxx ))

既存のため移動できない物はa:\xxxに残るので名前変更して再実行
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 761日 6時間 9分 1秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況