【.cmd】 バッチファイルスクリプト %14 【.bat】at TECH
【.cmd】 バッチファイルスクリプト %14 【.bat】 - 暇つぶし2ch1:デフォルトの名無しさん
20/08/15 07:00:26 f3kW5kCx.net
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

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

過去スレ
%13 スレリンク(tech板)
%12 スレリンク(tech板)
%11 スレリンク(tech板)
%10 スレリンク(tech板)
%9 スレリンク(tech板)
%8 スレリンク(tech板)
%7 スレリンク(tech板)
%6 スレリンク(tech板)
%5 スレリンク(tech板)
%4 スレリンク(tech板)
%3 スレリンク(tech板)
%2 スレリンク(tech板)
【.cmd】 バッチファイルスクリプト %1 【.bat】
スレリンク(tech板)
バッチファイルプログラミング 3.bat
スレリンク(tech板)
バッチファイルプログラミング 2.bat
スレリンク(tech板)
バッチファイルプログラミング質問スレ
スレリンク(tech板)

2:デフォルトの名無しさん
20/08/15 07:38:40.18 sYOUYcTP.net
Swiss File Knife
URLリンク(www.freewarefiles.com)
URLリンク(stahlworks.com)
ちょっと試したけど使い勝手が良い

3:デフォルトの名無しさん
20/08/15 16:03:49.79 YDp7CJXQ.net
startコマンドでコマンドを実行がエラーになった時にerrorlevelで戻り値確認すると9020になっている。
/wait付けても付けなくても同じ。
これが正しいのかよくわからん

4:デフォルトの名無しさん
20/08/15 23:16:48.97 vVgO0BR5.net


5:="../test/read.cgi/tech/1597442426/3" rel="noopener noreferrer" target="_blank" class="reply_link">>>3 普通の動作 実行したアプリが即時終了して9020を返しているだけ



6:デフォルトの名無しさん
20/08/16 07:47:08.35 A8ymKSpp.net
そういう結果にはならんなー
(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が成功したら、実行したコマンドの戻り値を返す

7:3
20/08/16 09:57:56.96 +xZknRBW.net
>>5
そうそうそう。
9020と9059の違いはありますが、
起動か失敗するコマンドは独自に実行するとOSから別のエラーコード(起動失敗の直接の原因となったエラー)が返ってきますが、
それがstartコマンドから実行すると(自分の場合は)9020になって本来のエラーコードがわからないって事です。

8:デフォルトの名無しさん
20/08/16 10:40:25.72 O0yhKyc9.net
start /wait
cmd /k
使い方

9:デフォルトの名無しさん
20/08/16 10:54:36.31 7Iew54RL.net
コマンドは何よ?

10:デフォルトの名無しさん
20/08/16 18:45:13 5bX3HnFK.net
話変わるけど、括弧で結果が変わるのはなんで?

>color 00 & echo %errorlevel%
0

>(color 00) & echo %errorlevel%
1

11:デフォルトの名無しさん
20/08/16 19:20:31.36 Nztll5gc.net
ぬ?
URLリンク(light.dotup.org)

12:デフォルトの名無しさん
20/08/16 19:28:17.47 5bX3HnFK.net
>>10 ありがとう
おれの環境だとあらかじめ
set errorlevel=1
にしてるとそうなるけど

13:デフォルトの名無しさん
20/08/16 19:29:38.18 vTgpRfn/.net
2度目のはerrorlevelを0にして試してないのでは?
&でつなぐと forの中の %変数% と同じで反映されない
試してないけど遅延展開有効にして!errorlevel!とすれば多分大丈夫
()は関係無い

14:デフォルトの名無しさん
20/08/16 19:36:49.54 5bX3HnFK.net
あらかじめ set errorlevel=0 にすると
両方とも 0 になる。

15:デフォルトの名無しさん
20/08/16 19:42:36.63 vTgpRfn/.net
set errolevel=値 したらsetした環境変数が優先されerrorlevel自動代入の機能は死ぬ
set errolevel=
で消せば元に戻る

16:デフォルトの名無しさん
20/08/16 19:51:04.53 5bX3HnFK.net
あらかじめ set errorlevel= にすると
>>9 のようになる

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

18:デフォルトの名無しさん
20/08/16 20:17:16.41 A8ymKSpp.net
>color 00 & echo %errorlevel%
これはcolor 00 & echo %errorlevel%を実行する直前のerrorlevelが表示される。
color 00の実行結果を知りたければ&でつながずに2回に分けて実行しなければならない。
>color 00
>echo %errorlevel%
あるいはcmd /v:onで遅延展開を有効にしてから
>color 00 & echo !errorlevel!

19:デフォルトの名無しさん
20/08/16 20:29:56.33 5bX3HnFK.net
>>16 ありがとう。括弧は無関係ですね
set errorlevel= だと初期化されないのか

20:デフォルトの名無しさん
20/08/16 20:39:32.90 vTgpRfn/.net
この「構文評価時に展開される」というロジックを使って環境変数を配列のように使えたりする
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

21:デフォルトの名無しさん
20/08/16 21:37:34.66 vTgpRfn/.net
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です。とはならない

22:デフォルトの名無しさん
20/08/17 07:53:31.79 hOPUdkb9.net
%cd% も
他に何かあったっけ?

23:デフォルトの名無しさん
20/08/17 08:21:28 hOPUdkb9.net
cd
cmdcmdline
cmdextversion
date
errorlevel
highestnumanodenumber
random
time

24:デフォルトの名無しさん
20/08/17 11:49:09.93 0uhm6UU6.net
if errorlevel 0 goto err

25:デフォルトの名無しさん
20/08/17 12:25:18 Md0hBahZ.net
後藤は極力使わない

26:デフォルトの名無しさん
20/08/17 18:56:48.99 hmt9CL+F.net
>>18
ERRORLEVEL が初期化できない場合は
>cmd /c exit 7
>set ""|findstr "=E"
=ExitCode=00000007

27:デフォルトの名無しさん
20/08/17 19:02:26.61 hmt9CL+F.net
echo %=ExitCode%

28:デフォルトの名無しさん
20/08/17 19:16:51.03 hmt9CL+F.net
ダメだな exit にしか使えんな

29:デフォルトの名無しさん
20/08/22 16:25:23.98 WW0Ct525.net
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なんだな。これにも躓いた

30:デフォルトの名無しさん
20/08/22 20:54:30 ZT5qbO53.net
以前から findstr は全角が絡むと挙動不審になる
>echo A | findstr /r /c:"[ア]"
A

31:デフォルトの名無しさん
20/08/23 00:55:18 W2kjoCYK.net
echo 陰|findstr /r /c:"[ア]"

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

"[ア]"は"0x8341" では無く、"0x83","0x41" の文字集合扱いってことみたいだね
"."の扱いもそうだし1byteでしかみてないの確定か。酷い
とするとほぼリテラルでしか使えないな
日本語文章のファイルからアルファベットが含まれる行を抜き出そうとして"[A-z]"とかしても関係無い行だらけになりそうだ

32:デフォルトの名無しさん
20/08/23 05:33:34.45 YFfZnyha.net
ついでに言うと正規表現ではない検索も変だろ
/R 無くても同じ。何のためのオプションだよ
>echo abc | FINDSTR "[b]"
abc
>echo abc | FINDSTR "."
abc

33:デフォルトの名無しさん
20/08/23 09:26:20.02 W2kjoCYK.net
それはバグってより設計者の好みだろう
デフォを自分仕様にしたかったのだろうね
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:"^@" と書くより楽だし

34:デフォルトの名無しさん
20/08/23 18:33:53 YFfZnyha.net
>>32
勉強になりました。ありがとうございます。

35:デフォルトの名無しさん
20/08/23 19:13:37 YFfZnyha.net
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"

36:デフォルトの名無しさん
20/08/24 22:11:18 lQsXqBw5.net
>>34
こりゃ、呪文だなwww

37:デフォルトの名無しさん
20/08/25 00:00:29.45 u2jzRMP8.net
最近は ripgrep ばかりで findstr 使わなくなったなぁ

38:デフォルトの名無しさん
20/08/25 07:21:39.36 DIRbM727.net
難問
echo a^^b | find "a^b"

39:デフォルトの名無しさん
20/08/25 10:40:55.06 QTO1Ka7Y.net
>>37 解けた
echo a^^^^b | find "a^b"
a^b
何故こうなるかは知らん

40:デフォルトの名無しさん
20/08/25 11:04:16.63 tde3aaGe.net
コマンドライン解析で一度、パイプで二度

41:デフォルトの名無しさん
20/08/25 15:32:57 e1SePToE.net
難問のような書き方ができないのが初心者
難問のような書き方を回避するのが上級者、時間の無駄なので

42:デフォルトの名無しさん
20/08/25 17:31:06.89 DIRbM727.net
echo a^^b | find "ab"
ab

43:デフォルトの名無しさん
20/08/26 06:29:54.99 uY0vxId0.net
URLリンク(stackoverrun.com)
昨日これにハマってた
こんなエスケープの仕方、気付けるかってのw
俺はリダイレクトじゃなくてfor do の()内でfindstrの後ろに)や&&がある時にダメだった
長いと見辛くなるけど()を付けずに1行で書くとエスケープ無くとも問題ない
findstrもsetと同じく基本的には改行で終わるようにするかサブルーチン呼んでネスト外にした方がいいっぽい
>>40 いやほんとそれな
なるべくネストさせない書き方だったりロジックが大事

44:デフォルトの名無しさん
20/08/26 08:34:28 PfiO/aOo.net
トラブルが嫌なら全部一行ずつ書けばいい
あとはcallとかgotoで制御して
そもそも初級者は何を回避したらいいか判別できない
ハマった経験が無いからね

45:デフォルトの名無しさん
20/08/26 08:42:47.76 Aw0pMxIV.net
stackoverrunなんてパクリクソサイト使うんじゃねー
stackoverflow見ろ
URLリンク(stackoverflow.com)

46:デフォルトの名無しさん
20/08/26 09:18:45 3xqKZ5M9.net
>>44
ここはあめぞうのパクリサイトですお

47:デフォルトの名無しさん
20/09/03 14:07:53 k8mfa657.net
指定フォルダ配下の全フォルダに対してプログラムを実行したいんですが、
batってフォルダかどうかってどう判別すればいいんですか?
Pythonのisdirみたいなことって出来ますか?

48:デフォルトの名無しさん
20/09/03 14:42:52 +v/Eop6e.net
>>46
フォルダに必ずあるファイルの存在チェック
if exist "フォルダ\." echo フォルダです

又はdirコマンドの助けを借りるとか、他にもやり方はありそう
>nul 2>&1 (dir /ad "フォルダ"|find "<DIR>")&&echo フォルダです

49:デフォルトの名無しさん
20/09/03 14:52:00 +v/Eop6e.net
あれ、.や..を指定するとダメみたい\のみで
間違って覚えてたのかな

50:デフォルトの名無しさん
20/09/03 15:38:32.84 14mNqQ/J.net
> 指定フォルダ配下の全フォルダに対してプログラムを実行
> 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

51:デフォルトの名無しさん
20/09/03 20:06:56.41 cSGnh9i3.net
if exist Folder\NUL
NULとかのデバイスが存在すればフォルダ

52:46
20/09/03 21:43:59.26 s/SMQArb.net
ありがとうございます
いろいろなやり方があるんですね

53:デフォルトの名無しさん
20/09/03 23:29:38 YSxN3SpI.net
誰か挙げてくると思ってたけど嫌われてんの?w > forfiles
forfiles には @isdir というまんまディレクトリ判定のがある

他にもまぁ便利っちゃ便利なんだけど、遅いのであんまり使わない forfiles

54:デフォルトの名無しさん
20/09/04 00:30:01.26 kQRqRY30.net
xpで使えないと駄目だろ

55:デフォルトの名無しさん
20/09/04 23:58:55 1jfeDIRi.net
XP... 今時…

56:デフォルトの名無しさん
20/09/05 07:15:55.93 6fK9k7zC.net
cd folder && program でいいやろ…

57:デフォルトの名無しさん
20/09/10 03:56:31.22 udh9kkuM.net
@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段なんだと思うんだけど。。
分かる人居たらお願いします

58:デフォルトの名無しさん
20/09/10 06:03:46.49 v191ihhK.net
こういうのは嫌なのか?
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>"R"&"31

59:デフォルトの名無しさん
20/09/10 08:08:01.59 udh9kkuM.net
>>57
ありがとう
それでも動いたし以下でも行けた
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>R&31
という事は右シフトとアンドだけが問題で他は関係無いっぽい
^だけじゃ出来ないのかな

60:デフォルトの名無しさん
20/09/13 15:25:35.94 W8TB3CjN.net
バッチファイルでメッセージボックスを表示してレジストリのバックアップをするとエラーになります
なんででしょうか
ご教示よろしくお願いいたします
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
エラーメッセージ
エラー: ファイルに書き込めません。ディスクまたはファイル システムにエラーがある
可能性があります。

61:デフォルトの名無しさん
20/09/13 15:53:37.94 UUr/oA+t.net
たぶんディスクまたはファイルシステムにエラーがある

62:デフォルトの名無しさん
20/09/13 16:22:35.50 rbJ0gfd+.net
実行してないけど多分&で繋いだところで、まだ%tmp%ファイルが作られてないんじゃないかな
ついでに結果判定の行も実行前に通過しちゃいそう

63:デフォルトの名無しさん
20/09/13 17:33:48.42 rbJ0gfd+.net
実行してみた
原因は%tmp%を変更したからだね(おそらくregコマンドがtmpを使ってる)
%tmp%→%tmpfile%とでもしとけばいい

64:デフォルトの名無しさん
20/09/13 17:52:08.11 W8TB3CjN.net
>>62
ID:rbJ0gfd+ さんへ
  長年の疑問が晴れました。ありがとうございました。m(_ _)m

65:デフォルトの名無しさん
20/09/14 18:50:01.56 QRPjjbWO.net
なんじゃそれ

66:デフォルトの名無しさん
20/09/15 08:02:48.52 zq4P2IYm.net
昔はバカコーダーの代表格だったif else if...でひたすら羅列してるやつ、くっそ遅かったのに
今win10だとforで回すより速いんだがw 試して思わず吹いたw
XP機なんてもう無いから比較出来んけど
専門用語よく分からんがプリプロセッサだかインタープリタだかがセミコンパイル?最適化?してくれるようになったん?
カビ臭いセオリーに囚われてちゃイカンようだ

67:デフォルトの名無しさん
20/09/15 10:14:02.00 QjU8NMVB.net
for do 後の文中に call を入れると遅くなるのを何とかして欲しい。
処理時間が倍増する。下手すると何十倍もかかる

68:デフォルトの名無しさん
20/09/15 10:25:56.06 X+gTbBjK.net
フロッピーディスクでディスクキャッシュ無効にしてbat走らせると
1行ごとにbatファイルを再読み込みしているのが実感できて楽しいよ

69:デフォルトの名無しさん
20/09/15 14:56:26.93 zq4P2IYm.net
>>66
call set とかで多段展開よく使うんだけど
callの代わりにfor文にしてfor変数と遅延展開にして callやめたら確かに速くなったわ
見た目上は call set の方がシンプルで速そうなんだがなー
速い書き方模索してたので助かった. ありがとう

70:デフォルトの名無しさん
20/09/15 15:12:45.99 zo2IeaGi.net
callの時点で子タスク生成して構文解釈まで行われるじゃん
速いはず無い

71:デフォルトの名無しさん
20/09/15 15:29:08.58 QjU8NMVB.net
おまけにバッチ優先だから気味が悪い
@echo off
echo set a=NG > set.bat
call set a=OK
echo %a%
pause

72:デフォルトの名無しさん
20/09/15 16:07:46.64 zq4P2IYm.net
偶にコマンド名と同じファイル名付けてトラブるバカが居るけどそれは流石にイチャモンが過ぎるだろw

73:デフォルトの名無しさん
20/09/15 16:17:43.50 QjU8NMVB.net
普通は内部コマンド優先

74:デフォルトの名無しさん
20/09/15 18:34:43.10 X+gTbBjK.net
毎回set.batがあるかpath探してるのか?

75:デフォルトの名無しさん
20/09/15 18:52:07.91 QjU8NMVB.net
そうだと思う。たぶん exe とかも捜してる。
余計な処理で時間のロス

76:デフォルトの名無しさん
20/09/15 19:48:46.31 /ea/Q9+g.net
callって元々バッチファイルを呼ぶためのコマンドだしな
環境変数を遅延展開するために使えるなんて公式ヘルプには載ってない

77:デフォルトの名無しさん
20/09/15 23:46:39.63 otyKrGil.net
>>62
これ危ないね
windowsとユーザの環境変数は分けないとウィルスに悪用されそう

78:デフォルトの名無しさん
20/09/18 22:08:23.94 uEsKVG5e.net
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をクリックしてコマンドプロンプトを閉じています

79:デフォルトの名無しさん
20/09/18 22:14:12.38 uEsKVG5e.net
こちらの質問はもしかしたらスレ違いかもしれませんが。
あるフォルダ内のファイル一覧をテキストファイルに落としたいと思っています。
一太郎Ver4.3付属のMS-DOS2.11以来、DOSに慣れ親しんでいる私は、
CMD (又は見栄を張ってpowershell)で、
D:\hoge\hoge>dir > list.txt
なんてやってしまうのですが、
Windows10ネイティブのナウなヤングはWindows上で、どのようにやるのでしょうか
コマンドプロンプトなんて使ったことのない、普通のWindowsユーザーさんに教える必要があります

80:デフォルトの名無しさん
20/09/19 03:30:06.61 1TUbP9BW.net
dir /b > list.txt

81:デフォルトの名無しさん
20/09/19 05:19:51.44 RfEWMQRr.net
>>77
choice /?
タイムアウトも既定の状態も設定出来る

82:デフォルトの名無しさん
20/09/19 06:32:50.16 aPDv4PNE.net
キーを限定してもいいならchoice

83:デフォルトの名無しさん
20/09/19 06:41:28.16 aPDv4PNE.net
>>78
エクスプローラーで選択してホーム、パスのコピー、メモ帳にコピペ保存
Windows板でレスがあったろ

84:デフォルトの名無しさん
20/09/19 07:30:51.34 RfEWMQRr.net
choiceはotherが設定出来たら言うことなしだったのになぁ
forもcontinueとbreakさえあれば。。
あと一歩をわざと使いづらくしてるのかと邪推してしまうわ

85:デフォルトの名無しさん
20/09/20 20:29:41.51 QtwFpjW/.net
恐れ入ります。初心者です。
約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、
もしくは検索ワードだけでも教えて頂けると助かります。

86:デフォルトの名無しさん
20/09/20 20:38:05.68 bYdUCAyz.net
m4a ファイルが D:\M4A\ に入っているとして
for %%L in (D:\M4A\*.m4a) do ffmpeg -i %%L -ab 48k %%~nL.mp3

87:デフォルトの名無しさん
20/09/20 20:57:17.46 QtwFpjW/.net
>>85
早速のアドバイス、ありがとうございました。
見事に変換できました。
私の発想の方向性が悪く、for文を使えば良かったのかと…
ありがとうございました。

88:デフォルトの名無しさん
20/10/03 10:47:40.18 wKgZGKzj.net
入力された文字列を使ってコマンドを走らせようとしてるんだけど変数に値は入るんだけどコマンドの方には空っぽで出力されるんだがなにか処理っているの?
%で囲むだけでいいよね?

89:デフォルトの名無しさん
20/10/03 10:53:42.03 HRjNW00f.net
>>87
多分、遅延環境変数の問題
setlocal enabledelayedexpansion書かないとだめ

90:デフォルトの名無しさん
20/10/03 10:57:51.23 wKgZGKzj.net
>>88
それはなんですか?

91:デフォルトの名無しさん
20/10/04 00:03:10.85 1nqCsM3n.net
>>89
お前の質問が情報不足だから可能性のある回答を当てずっぽうで答えたのだろうよ
なお何かというと setlocal /? を読め

92:デフォルトの名無しさん
20/10/04 00:16:53.72 VPBkvUyg.net
上から目線怖い

93:デフォルトの名無しさん
20/10/07 22:42:28.13 8t5FIA98.net
set /p moji=入力するのじゃ
echo 出力するでおじゃる %moji%
うん、何の処理もいらないな

94:デフォルトの名無しさん
20/10/08 13:42:17.79 BulPjeqX.net
遅延展開に関して setlocal /? にはロクな説明無いよ
詳しい説明が書かれているのは set /? の方
まあ87みたいなアホはスルーしとけ

95:デフォルトの名無しさん
20/10/09 12:07:08.64 xYDxCkF1.net
入力処理を2回する時ってなにか特殊な処理とかいるの?
YESNO→文字列入力で
後者の処理で変数に文字列が入らない

96:デフォルトの名無しさん
20/10/09 12:17:29.66 ZREy0Q0x.net
>>94
そんなんじゃ分からんよ
具体的に書け
おそらくすぐ上のレスと同じ気はするけど

97:デフォルトの名無しさん
20/10/09 12:41:22.12 xYDxCkF1.net
>>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 URLリンク(lb.loadloadingfreevideo.top) --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回目の入力値の変数には値が入ってくるんだが出力されたときには空欄で出力される…

98:デフォルトの名無しさん
20/10/09 13:22:34.61 MFDBon0y.net
すみません、自己解決しました

99:デフォルトの名無しさん
20/10/09 13:34:07.34 xYDxCkF1.net
してないわw

100:デフォルトの名無しさん
20/10/09 14:11:49.12 ZREy0Q0x.net
行の解釈は、行を読み込んだ時点で解釈され、変数は置換される
()で囲まれた部分は全体で一行扱い
つまり括弧内で入力したって、それは括弧を抜けないと有効でなく
カッコ内は既に括弧前(if文の前)の値で置換済み
やっぱり上のレスと同じじゃん

101:デフォルトの名無しさん
20/10/09 14:35:46.06 ZREy0Q0x.net
解決策は
構造を変えて、入力と参照のどちらかをif文から出すか
遅延環境変数を使うか
call文で内部の処理をサブルーチンとして呼び出す形にするか

102:デフォルトの名無しさん
20/10/09 14:36:34.08 0eCLusxq.net
@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 "URLリンク(lb.loadloadingfreevideo.top) --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

103:デフォルトの名無しさん
20/10/09 14:46:41.82 xYDxCkF1.net
>>100
検索ワードが悪かったみたいで調べてみたら遅延環境変数で忘備録書いてる人いたから読み解いてくる
>>101
ありがとう
試しに使ってみたら大成功だったよ
ルーチン呼ぶほうが簡単みたいね
感謝しきれないわ。
自分で作りかけもできるようになるまで模索してみる
みんなありがとう

104:デフォルトの名無しさん
20/10/09 19:13:39.03 bdkjFn4I.net
ここの人たちはコマンドプロンプトのことを「シェル」って呼ぶ?
あまり一般的じゃないですよね?
シェルって言ったらBashとかあっちのイメージなんですが

105:デフォルトの名無しさん
20/10/09 19:55:04.43 /2wG1kS2.net
dosshellよりはシェルっぽい

106:デフォルトの名無しさん
20/10/09 20:56:01.11 bdkjFn4I.net
Wiki見るとジャンル的にはコマンドプロンプトもコマンドラインインタプリタ(シェル)みたいなんですが、
あんまりシェルって読んでる人いないですよね

107:デフォルトの名無しさん
20/10/09 20:57:57.12 verB6kW/.net
そりゃWinfowのシェルはエクスプローラーだもの

108:デフォルトの名無しさん
20/10/09 21:33:57.08 pYgpY0Tn.net
cmdがコンソールくっついてんのは設計の失敗だよなあ
powershellでも同じ轍を踏んでるし
客から黒い画面邪魔って何億回言われてんだろう
あふぉが過ぎる

109:デフォルトの名無しさん
20/10/09 21:38:55.75 0CTZ1NG3.net
黒い画面なしで起動することは可能なんだから、
何億回も言われてるのはお前の問題

110:デフォルトの名無しさん
20/10/09 22:58:55.17 4BFKVw+u.net
黒いの嫌なら白に設定しろ

111:デフォルトの名無しさん
20/10/09 23:53:38.68 760t1BpC.net
>>96
youtube-dl とか、そんな複雑な処理は、Ruby, VBScript, PowerShell などで作るべき
複雑なバッチファイルなんて、保守できない

112:デフォルトの名無しさん
20/10/10 00:20:53.75 9msS7xxw.net
いや、Updateと普通のURLはbatに組み込まない方がいいだろ
直接使ってもさほど変わらない
ok.ru専属batにしたほうがいい

113:デフォルトの名無しさん
20/10/10 03:21:12.75 I6aD6+Ht.net
>>111
ok.ruだけじゃないんだよ某サイト

114:デフォルトの名無しさん
20/10/11 08:59:02.91 uWZZ3h6O.net
batのウィンドウを非表示で実行するためにvbs噛ませてたんだけど「このスクリプトには、悪質なコンテンツが含まれているため、ウイルス対策ソフトウェアによりブロックされています。」って言われるようになっちゃった

115:デフォルトの名無しさん
20/10/11 09:08:42.65 /L2D78D0.net
>>113
batのショートカットを最小化で実行するとかは

116:デフォルトの名無しさん
20/10/11 20:13:47.65 P0HYJFd1.net
>>114

117:デフォルトの名無しさん
20/10/11 20:15:27.38 P0HYJFd1.net
>>114
それだと一瞬黒い画面が表示されない?
115は書き損じ

118:デフォルトの名無しさん
20/10/11 20:31:14.01 /L2D78D0.net
>>116
ショートカットのプロパティで最小化する�


119:ネら表示されないでしょう タスクバーには出てくるけど



120:デフォルトの名無しさん
20/10/11 21:12:48.29 P0HYJFd1.net
>>117
今win8で実行したら表示されなかった。
俺環'(116はwin10)だったみたい
原因調べてみよ、ありがとう

121:116
20/10/11 22:14:08.72 P0HYJFd1.net
勘違いだった
タスクスケジューラにショートカットを指定してもbatファイル本体の指定に切り替わるみたいなので
startコマンドにminオプション付けてbatファイル本体を実行してたのを
ショートカットで最小に指定してもdos窓が一瞬表示されると間違って覚えてた、恥ずかしい

122:デフォルトの名無しさん
20/10/19 21:03:48.43 i1CJTVJK.net
「コマンドプロンプトは黒い画面に文字がたくさん出て怖い」→「チャット風」にしてみた LINEみたいで「分かりやすい」と話題に
URLリンク(nlab.itmedia.co.jp)

123:デフォルトの名無しさん
20/10/20 00:04:16.20 jnlumX7z.net
>>120
考えた人、特許取ってあるのかな
microsoftが真似すると思う

124:デフォルトの名無しさん
20/10/20 01:21:04.79 0/xBmjm3.net
>>121
MIT

125:デフォルトの名無しさん
20/10/20 11:26:40.30 jR74MZK7.net
使ってないけどこのダサい画面なんとかならんのかね
特に色使い

126:デフォルトの名無しさん
20/11/10 07:53:43.00 CPbRFFCx.net
>>113
おれも。
vbs 呼んでたのが原因か。
原因がわかって少し納得した。
けれど中身に関わらず勝手に実行できなくしてしまうのは大問題だよな > マイクロソフト

127:デフォルトの名無しさん
20/11/27 17:54:04.98 w5Az7J0d.net
cd ... 点3つ で2階層上のディレクトリに上がれるのって
どのWindowsの機能だっけ?

128:デフォルトの名無しさん
20/11/27 23:22:30.42 MUwYgmwm.net
本家Windowsの末裔である95

129:デフォルトの名無しさん
20/11/27 23:22:47.95 MUwYgmwm.net
からMe

130:デフォルトの名無しさん
21/01/08 22:35:28.22 BCe3tfGB.net
コマンドプロンプトのコピペが化ける。
全角の二重引用符を貼り付けると半角になった。
他にも化ける文字ってあるのかな

131:デフォルトの名無しさん
21/01/15 23:17:05.02 na+cGcWl.net
forループでフォルダ内のファイルを取得するときにファイル名だけ抽出するコマンドってなんでしょう?
「%~n.txt」とか色々試したのですが、何を入れてもそんなファイルは存在しないといわれてしまいます(「%~n.txt」なら「%~n.txtは存在しない」)
ググってもわからなかったのでお願いします
for %%f in (フォルダパス) do (
 ここで処理したい
)

132:デフォルトの名無しさん
21/01/15 23:17:58.97 na+cGcWl.net
>>129
これbatファイルです

133:デフォルトの名無しさん
21/01/15 23:36:01.03 OOSIw0eU.net
for %%f in (*.txt) do (echo %%~nf)
help for読もう

134:デフォルトの名無しさん
21/01/16 00:20:33.58 MUPXwQYg.net
for %%f in (*.txt) do (echo %%~f)
for /F "TOKENS=1" %%f in ('dir /B *.txt') do (echo %%~f)

135:デフォルトの名無しさん
21/01/16 00:25:52.93 xL4nSAcD.net
それ "delims=" と勘違いしてる?

136:デフォルトの名無しさん
21/01/16 00:45:01.02 MUPXwQYg.net
ごめん
tokens=1はいらなかった。余計だった

137:デフォルトの名無しさん
21/01/16 00:56:21.35 KTlk0YqY.net
>>131
ありがとう
help forというのはどこでもみれますか?
コマンドをたたいてもググってもやっぱり出てきません

138:デフォルトの名無しさん
21/01/16 01:10:21.04 No4exMNc.net
help for でも for /? でも出ると思うけど
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)

139:デフォルトの名無しさん
21/01/16 01:19:53.49 KTlk0YqY.net
>>136
ありがとう

140:デフォルトの名無しさん
21/01/25 19:13:54.7


141:4 ID:P1MpJdzu.net



142:デフォルトの名無しさん
21/01/25 22:05:10.09 N4f0FgIr.net
>>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

143:デフォルトの名無しさん
21/01/25 23:01:36.92 esdkgJAR.net
>>139
a.zip,b.zip,c.zip,d.zip…というのはあくまでも例で
実際にはいつもそんな名前ではないと思われるが?

144:デフォルトの名無しさん
21/01/26 00:03:58.29 ECUGH5kE.net
>>139
/o-nを使わずにsortするのは何か理由でもあるの?

145:デフォルトの名無しさん
21/01/26 00:23:50.23 ECUGH5kE.net
あとドライブ直下が対象だとdir /adだと、
$RECYCLE.BINやSystem Volume Informationなどシステムフォルダまで見えちゃうね
中のファイルが見えなかったりリネームできなかったりで実害は無いのかもしれないけど
/ad-sの方がいいね

146:デフォルトの名無しさん
21/01/26 00:44:20.98 CijQ7yAc.net
>>140
単純にdirで列挙されるファイルリストの最初のファイル名を使おうとしてるけど、何を言いたいのか分からない
>>141
確かにdir /o-nで問題ないです
sortでないとだめな理由はない
あとドライブ直下でテストはしてなかったからシステムディレクトリは盲点だった
ありがとう

147:デフォルトの名無しさん
21/01/26 01:23:39.15 ECUGH5kE.net
a010.txt, a2.txt
だとかエクスプローラとdirの昇順の並び順が異なってくるのはどう対処したらいいんだろう

148:デフォルトの名無しさん
21/01/26 02:02:45.97 YrHBLfuO.net
疑問に感じたらググれ
すぐ見付かる

149:デフォルトの名無しさん
21/01/26 02:28:00.25 mwA/u23E.net
>>139
ありがとうございます!!出来ました感激です
教えていただいて更に恐縮なのですが、ファイル名昇順の一番上の名前ではなく、一番最後の名前にするにはどの部分を変えれば良いのでしょうか…?
教えて頂ければ幸いです。宜しくお願い致します。

150:デフォルトの名無しさん
21/01/26 02:57:22.05 YrHBLfuO.net
in ('dir /a-d /b !dr! ^| sort /r') do

in ('dir /a-d /b !dr!') do

151:デフォルトの名無しさん
21/01/26 03:28:21.19 mwA/u23E.net
>>147
ありがとうございます
>>147こちらを先程の「>>139先頭ファイルへのリネーム.cmd」をしたフォルダで試した所「ファイルが見つかりません」とエラーメッセージが出てファイル名の変更が出来ないのですが何故でしょうか…。
まだ何もしていないフォルダへのリネームは>>147の「末尾ファイルリネーム.cmd」でも出来ました。一度しか使えないバッチファイルなのでしょうか…。

152:デフォルトの名無しさん
21/01/26 03:55:31.46 YrHBLfuO.net
in ('dir /a-d /b "!dr!"') do

153:デフォルトの名無しさん
21/01/26 17:47:59.55 mwA/u23E.net
>>149
ありがとうございます
こちらに変更した所何度でも上書きでリネームすることが出来ました。
本当にありがとうございます

154:デフォルトの名無しさん
21/01/26 18:30:12.90 3Vc5Ni7z.net
あんた昇順の意味わかってる?

155:デフォルトの名無しさん
21/01/27 14:18:42.02 zQyl/e7v.net
for %%c in ("!dr!\*") do

156:デフォルトの名無しさん
21/01/29 20:04:30.58 nZkldKO7.net
ドラッグアンドドロップしたファイル(複数)を下の
ffmpeg -i "AAA.flv" -vcodec copy -acodec copy "AAA.mp4"
に入れたいです。ドロップするファイルはffmpegが置いてあるフォルダにありますが、できれば異なるフォルダからのファイルでも可能にする方法もあれば知りたいです。
よろしくおねがいします。

157:デフォルトの名無しさん
21/01/29 20:16:16.41 MVM9RsSY.net
例えば、ドロップしたファイルが、a, b, c とすると、
どういうコマンドにしたいの?

158:デフォルトの名無しさん
21/01/29 20:27:09.50 nZkldKO7.net
a,b,cの動画ファイルをffmpegで変換して、それをドロップ元のフォルダに保存したいです。変換の内容は"a.flv"→ "a.mp4"です。

159:デフォルトの名無しさん
21/01/29 20:32:39.25 mJjQcNNM.net
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

160:デフォルトの名無しさん
21/01/29 22:13:01.62 MVM9RsSY.net
PowerShellスクリプトにドラッグ&ドロップしたファイルを処理させる方法
URLリンク(4thsight.xyz)
ショートカット・バッチファイルに、D&D して処理する

161:157
21/01/29 22:55:34.81 MVM9RsSY.net
Ruby なら、デスクトップのa.rb に、下のように書いて、そのショートカットを作る。
ショートカットのリンク先を、C:\Ruby25-x64\bin\ruby.exe a.rb
とする。
これで、ショートカットにD&D した、すべてのファイルのフルパスが表示される
sleep は、コマンドプロンプト画面を終了させないため
puts ARGV
sleep 60 * 60 * 24

162:デフォルトの名無しさん
21/01/30 00:09:57.42 cwRmtLqZ.net
>>156
ありがとうございます!できました。

163:157
21/01/30 19:43:14.44 txnUgrNq.net
>>158
修正
Ruby なら、デスクトップのa.rb に、
puts ARGV
と書いて、そのショートカットを作る
ショートカットのリンク先を、コマンドプロンプトとする。
cmd@.exe で、ruby で、a.rb を実行する。
C:\Windows\System32\cmd@.exe /k "ruby a.rb"
書き込めないので、@を付けましたが、
cmd@.exe の、@を抜いてください
これで、ショートカットにD&D した、すべてのファイルのフルパスが表示される

164:デフォルトの名無しさん
21/01/31 02:25:30.48 x4IKZ5QX.net
batの初心者的質問する奴にとって、Rubyはとてもじゃないが手が出ないだろうな

165:デフォルトの名無しさん
21/02/06 05:23:20.56 oQfB5lBJ.net
cmdよりrubyが難解!って粘着して説くやつなんなんだろ
俺はフリーダムなruby結構好きだけど、rubyアンチはcmdスレにまで出張ってくるんだな
理解に苦しむ

166:デフォルトの名無しさん
21/02/06 05:31:05.37 EC31O1b+.net
とうとう変人が来るようになってしまったなあ

167:デフォルトの名無しさん
21/02/06 18:33:37.40 IPUoPaen.net
そもそもruby自体がスレ違いな件

168:デフォルトの名無しさん
21/02/06 18:39:35.41 EC31O1b+.net
スレ違いとまでは言わないけど、インスコしなきゃ使えないのでハードルは高い

169:デフォルトの名無しさん
21/02/11 12:48:49.05 VoBWc0YM.net
スレリンク(tech板:213番)
過去ログにあった7z圧縮して指定したディレクトリに出力するコマンドですが
指定したファイル名の前に日時を入れることはできるでしょうか
20210211_○○○○.7zのような感じになればいいです

170:デフォルトの名無しさん
21/02/11 14:43:56.17 kRZRZf9v.net
そのスレの、>211の、
set /p n=書庫名(拡張子なし)=
の前に、20210211_ を付ければ、
20210211_○○○○.7z
になるのでは?

171:デフォルトの名無しさん
21/02/11 15:18:16.59 VoBWc0YM.net
>>167
ありがとうございます
しかし今日ならそれでもいいのですが明日以降は
同じ20210211_という過去の日付になってしまいますよね

172:デフォルトの名無しさん
21/02/11 15:28:40.76 L2KAeCmI.net
set yyyymmdd=%date:/=%
でいけると思う(XP以前だとこれじゃダメだけど)

173:デフォルトの名無しさん
21/02/11 15:50:55.44 ILn4iPBu.net
dateは環境によって表示が異なる
各々の環境に合わせて置換整形する必要あり

174:デフォルトの名無しさん
21/02/11 16:20:50.85 VoBWc0YM.net
set n=%date:/=%_[ファイル名]
これで 20210211_○○○○.7z のように付きました
>>167
>>169-170
皆さんありがとうございました

175:デフォルトの名無しさん
21/02/12 23:31:21.72 Jyf2ilAM.net
batわけわからんからpowershellいったらもっとワケワカラン

176:デフォルトの名無しさん
21/02/13 08:23:53.63 gaZOPqJ3.net
vbsへようこそ

177:デフォルトの名無しさん
21/02/16 17:33:37.55 05vP8Ot3.net
プロ仕様、というかシス環向けだからな…
とりあえずエイリアス一覧に載ってるのだけ覚えればcmdっぽいモノとしては使える

178:デフォルトの名無しさん
21/02/16 20:29:09.86 f5pz/7Q8.net
psは漢字ひらがなが露骨にズレるから辞めました
今は直ってる?

179:デフォルトの名無しさん
21/02/16 21:05:12.71 F9q4wvox.net
ファイル操作とか、PowerShell・シェルスクリプトよりも複雑な処理は、Ruby

180:デフォルトの名無しさん
21/02/17 15:04:11.28 JcWwc4WJ.net
>>175
全部かどうかはわからんけど直ってるよ
普通に使ってておかしいと思うことは無くなった

181:デフォルトの名無しさん
21/02/17 16:19:47.24 18/0dmLg.net
以前こちらで教えていただいた「内包しているファイルの一番降順のファイル名をフォルダ名にするバッチ」ですが >>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
こちら、ドラッグした同階層のフォルダまで全てリネームしてしまうようになってしまいますか?
ドラッグしたフォルダのみ、何度でも使えるようなバッチにするには何処を書き換えればよいか分かる方いらっしゃいませんでしょうか

182:デフォルトの名無しさん
21/02/17 17:36:24.38 XjBeFdEa.net
ドラッグするのか
後からそんなこと言われてもな

183:デフォルトの名無しさん
21/02/17 17:44:37.07 L78BN9q1.net
ドラッグしたファイル名はパッチファイルの引数に渡る
引数を読んで処理するように作らないとね

184:デフォルトの名無しさん
21/02/17 18:25:07.90 XjBeFdEa.net
どっかおかしいかも
@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

185:デフォルトの名無しさん
21/02/17 18:52:08.32 ZmDWWGuE.net
>>179->>180
本当にすいません 勝手にドラッグするものと勘違いしていました ドラッグではなく同一階層内で実行でしたね…。
できればフォルダドラッグで実行できればとても楽なのですが
>>181
ありがとうございます 試させて頂きます

186:デフォルトの名無しさん
21/02/17 22:56:18.83 LXOFF6tt.net
ネットワークアダプタがデバイスの都合で、
「イーサネット 2」、「イーサネット 3」…とインターフェースの後ろの番号がどんどん増えていきます。
これの有効なインターフェース名を取得したいのです。
レジストリとかでもいいですが、
「netsh interface show interface」コマンドの出力の名前欄で、
最初の「イーサネット~」を正確に取得したいのです。
がうまく切り出せません。
うまいやり方を教えてください・

187:デフォルトの名無しさん
21/02/17 23:20:10.90 18/0dmLg.net
>>181を教えてもらいましたが実行してもリネーム出来ませんでした

188:デフォルトの名無しさん
21/02/17 23:34:32.73 XjBeFdEa.net
>>184 もっと具体的に
>>183
set "c=netsh interface show interface"
for /f "skip=2 tokens=4*" %%i in ('%c%') do echo "%%i"

189:デフォルトの名無しさん
21/02/17 23:46:04.68 XjBeFdEa.net
間違えた
for /f "skip=2 tokens=3*" %%i in ('%c%') do echo "%%j"

190:デフォルトの名無しさん
21/02/18 00:48:33.87 gO/gzQD2.net
for /f "tokens=3*" %%a in ('


191:netsh interface show interface^|findstr "^有効"') do echo "%%b"



192:デフォルトの名無しさん
21/02/18 01:17:19.39 duO8GsyP.net
>>185-187
ありがとうございます!
無事切り出せました。

193:デフォルトの名無しさん
21/02/18 02:52:52.35 seGTs/0b.net
>>185
すいません、>>181の通りbatを作りましたが、ドラッグしても何も起こりませんでした。

194:デフォルトの名無しさん
21/02/18 04:33:33.04 SiC3vOBB.net
宿題は自分でやろうよ

195:デフォルトの名無しさん
21/02/18 06:38:53.51 tGVFfDdH.net
>>189
D&Dしたフォルダのフルパスは内緒か?
半角スペースは含まれているか?
半角の )^& 等の文字は含まれているか?

196:デフォルトの名無しさん
21/02/18 10:29:50.83 GbAv/KX+.net
@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

197:デフォルトの名無しさん
21/02/19 07:38:35.26 QeMEegpO.net
setlocal と goto br は要らんぞ。たぶん

198:デフォルトの名無しさん
21/02/19 14:27:59.70 E9a6ZzGX.net
setlocalは使用変数を局所化する
コマンドプロンプトで実行後も、使った変数は使う前の状態に戻る

199:デフォルトの名無しさん
21/02/19 14:39:22.20 Wnqd+KEH.net
ドラッグ&ドロップで使用することだけを考えたら確かに不要だが
習慣としてつけておいた方がよさげ

200:デフォルトの名無しさん
21/02/19 15:37:05.59 1yTQ5ZhE.net
無意味なもの付ける習慣はやめた方がいい

201:デフォルトの名無しさん
21/02/19 17:34:28.26 Wnqd+KEH.net
コードの流用を考えたら無意味ではないと思うが
まあ今回の質問者にとっちゃどうでもいいことかもね

202:デフォルトの名無しさん
21/02/19 17:57:51.89 E9a6ZzGX.net
ちゃんとした言語を使っている人ほどそういう点に気を配る傾向があるかな
俺は分かってさえいればどっちでも良いと思う
付けててもbatの組み合わせとかに気をつけてるんだろうなって思うだけで
別に文句を言うようなことでは無いと思う

203:デフォルトの名無しさん
21/02/19 18:16:09.12 QeMEegpO.net
別に文句は無いが蛇足だね

204:デフォルトの名無しさん
21/02/19 18:26:24.18 E9a6ZzGX.net
>>199
考え方は違ってて当然だし、文句言いたけりゃそれもまたありだろ
俺のことを言えば、自分で使う場合は付けないが
誰がどう使うか分からない公開するようなものだとちゃんと始末する

205:デフォルトの名無しさん
21/02/19 18:33:33.57 QeMEegpO.net
あと、思ったんだが「一番降順のファイル名」って何?
日本語は紛らわしいなあ

206:デフォルトの名無しさん
21/02/19 19:05:53.94 E9a6ZzGX.net
>>201の一番降順のファイル名ってので、goto :BRが必要だってのは分かったけど
>>192の内容ちゃんと見てなかった
けど、>>178のとは処理が違うのでは?
たぶん質問者は複数のフォルダをD&Dするんじゃなくて、一つのフォルダをD&Dしたら、
そのフォルダをリネームするんじゃなくて
そのフォルダの中のサブフォルダを全部リネームして欲しいんだと思う

207:デフォルトの名無しさん
21/02/19 19:12:54.09 E9a6ZzGX.net
あれ、一番降順のファイル名って正順で一番最後って意味か

208:デフォルトの名無しさん
21/02/19 19:14:31.95 +IamAtI7.net
>>202
> サブフォルダを全部
>>178
> ドラッグしたフォルダのみ

209:デフォルトの名無しさん
21/02/23 00:07:13.08 mSOvESBF.net
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項目でよいです。

どなたかプログラミングに詳しい方助けてください。

210:デフォルトの名無しさん
21/02/23 01:41:29.81 wcX5jbIj.net
>>205
choiceとnetsh使えばいいよ

211:デフォルトの名無しさん
21/02/23 02:25:49.54 8PZAxred.net
>>181>>192
もドラッグしても何も起こりませんでした
URLリンク(i.imgur.com)
1、2、3というファイル名のZIPが入っている「TEST」フォルダをドラッグ
URLリンク(i.imgur.com)
このTESTというフォルダが3というフォルダ名になれば良いのですが…。
ドライブ直下では他のフォルダ名が変わってしまうと怖いのでP/新しいフォルダ/test
という階層で試しています
やはり不可能でしょうか

212:デフォルトの名無しさん
21/02/23 08:41:00.03 iGzMgm/L.net
おれ環で試したところ、
>>181 では test が 3 に変わったが。
test を test) にするとダメだが。
>>192 は test は変わらん。というか他人のバッチは知らんわ。
試しに、このバッチにドラッグしてみて
@echo off
echo %*
pause
こう表示されなければシステムの問題
P:\新しいフォルダー\test

213:デフォルトの名無しさん
21/02/23 09:28:04.09 iGzMgm/L.net
>>192の5行目
pushd "%~1" || (pause&exit /b)
あと
&goto :BR と :BR は要らん

214:デフォルトの名無しさん
21/02/23 23:25:00.87 mSOvESBF.net
>>206
作っていただけませんでしょうか、、、

215:デフォルトの名無しさん
21/02/23 23:58:17.09 vON2H8DW.net
まさかただでやれと?

216:デフォルトの名無しさん
21/02/24 08:24:23.61 PISIFT9J.net
>>210
助けろって全部作れってことかよ
だるいし「、、、」が気持ち悪いからパス
使うコマンド教えたのに自分で作って貼りもしないくせに作れは論外
あとは使い方調べてやりたいようにやるだけじゃん
自分で作らないと理解できずに>>178みたいになるのが目に見えてる
>>1読んだらそういうスレじゃないことわかるだろ

217:デフォルトの名無しさん
21/02/24 10:07:20.78 wDwSsMVY.net
聞く前にまずググれ
バッチ IP変更

218:デフォルトの名無しさん
21/02/24 21:12:07.08 6sz2UuTx.net
これはひどい

219:デフォルトの名無しさん
21/02/24 22:09:11.14 lmMJyFPq.net
つーかなんで手動選択なん?
端末で走らせるなら端末名取れるだろ

220:デフォルトの名無しさん
21/02/24 23:24:44.75 m3EDeT3k.net
どういうこと
そのBATはUSBか何かに入れて各端末に持ち込むのか
それとも既に繋がっている端末にリモートで変更するのか
(各端末が一つのネットワークじゃ無くて別なところも気になる)

221:デフォルトの名無しさん
21/02/25 03:47:04.44 2izs5u42.net
いや、もうどうでもいいだろ

222:157
21/02/25 11:51:36.12 dOCTT7eM.net
>>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
次へ続く

223:157
21/02/25 11:53:03.33 dOCTT7eM.net
# 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

224:デフォルトの名無しさん
21/02/25 12:05:28.17 Ps3dMfcs.net
もう質問者は来ないよ

225:デフォルトの名無しさん
21/03/03 17:41:39.49 1pB7u9PK.net
errorlevel 9009 はなぜ9009なのですか?
他の数字じゃダメだったんですか?

226:デフォルトの名無しさん
21/03/03 19:21:37.30 6R5ygXlK.net
1919とか4545とか0721じゃ不快だろ?

227:デフォルトの名無しさん
21/03/03 23:07:15.98 EQp2xIYJ.net
qooq!

228:デフォルトの名無しさん
21/03/04 01:00:16.15 qQ3/2C8M.net
1123

229:デフォルトの名無しさん
21/03/04 07:32:57.88 YnU/cJu1.net
4126

230:デフォルトの名無しさん
21/03/09 05:40:32.23 WB4N5jzF.net
delコマンドでファイルを消すことはできますが
ゴミ箱に入れたい場合はどうすればよいのでしょうか?

231:デフォルトの名無しさん
21/03/09 06:44:52.98 psHK4d9P.net
「cmd ゴミ箱へ移動」でググれ

232:226
21/03/13 01:44:32.44 aqgAbZuG.net
>>227
cmdではムリポな件、承知しました><

233:デフォルトの名無しさん
21/03/13 03:06:59.13 pthlsCp5.net
>>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%\")"

234:デフォルトの名無しさん
21/03/22 08:41:49.24 ERIrsy59.net
「color ec」で黄色背景の赤文字とかやってたんだけど
いつのまにかカスタードクリームみたいなうっすい黄色になってるな
XPの頃は真っ黄色だったのにいつからこんな中途半端な色になったんだ?

235:デフォルトの名無しさん
21/03/22 08:59:02.64 gb0Yw1OG.net
c md.exeちょいちょいアプデされてるからな
プロパティで[レガシーコンソールを使用する]をオンにしたら昔の仕様になるかもよ

236:デフォルトの名無しさん
21/03/22 11:33:33.41 IKUBKfoT.net
>>230
たぶん2017年に変った
Windows 10 build 16257
URLリンク(devblogs.microsoft.com)

237:デフォルトの名無しさん
21/03/22 12:49:31.12 qU+vdcAr.net
c md.exeってNGなのかよ

238:デフォルトの名無しさん
21/03/22 12:58:34.93 IKUBKfoT.net
cmdで実行できるのに.exe付けるとNGとか意味不明だよな

239:デフォルトの名無しさん
21/03/22 13:03:44.31 qU+vdcAr.net
command.com
powershell.exe

240:デフォルトの名無しさん
21/03/22 13:27:25.65 yqDq0P8A.net
以前それを含むウィルスの一部コードだと思われるものが貼られまくったせいだと思う

241:デフォルトの名無しさん
21/03/22 13:29:51.79 yqDq0P8A.net
補足しておくと、ノートンが反応しまくってスレdatファイルを消しちゃうので
スレが見れない連発ね

242:デフォルトの名無しさん
21/03/22 13:47:35.81 IKUBKfoT.net
cmd とか "cmd".exe とか %comspec% とか穴だらけ

243:デフォルトの名無しさん
21/03/22 17:20:06.07 YZ6QCAld.net
cmd.exe
これでどうだ?

244:デフォルトの名無しさん
21/03/22 21:10:49.47 ERIrsy59.net
>>232
なるほど時代(LCD)に合わなくなったってことか、サンクス。。
>>231
再起動必要みたいだから今度再起動する時(1か月後ぐらいかな?w)に試してみます。

245:デフォルトの名無しさん
21/03/22 21:18:24.54 ERIrsy59.net
しかしMS-DOS時代みたいなあのどぎつい黄色が良かったんだがなあ・・・残念・・・

246:デフォルトの名無しさん
21/03/22 22:23:48.05 FrFq7CFg.net
ANSY.SYSのおもひで

247:デフォルトの名無しさん
21/03/22 23:49:54.90 IKUBKfoT.net
>>241
スレリンク(tech板:8番)

248:デフォルトの名無しさん
21/03/23 00:45:55.21 5blhcD6i.net
>>242
ANSI.SYSな

249:デフォルトの名無しさん
21/03/23 02:32:13.78 QbxOC6mC.net
>>244
あい

250:241
21/03/23 22:14:27.04 lgCFvm/4.net
>>243
現場の検証用PCなんでレジストリいじるのはNGでしたわw
でもこんな方法もあるんだね。参考になったよサンクス

251:デフォルトの名無しさん
21/03/24 14:20:41.98 yj6gJxmr.net
漏れは、WSL2 のコンソールが見にくいので、
Microsoft 製のColorTool で、配色テーマを変えてる
多分これも、レジストリをいじっている

252:デフォルトの名無しさん
21/03/24 16:41:09.17 cQ6WYo0q.net
俺は最近 Windows Terminal を使いだした
settings.jsonの設定が面倒くさい
でも >>128 のようなコピペのバグが無いので助かる

253:デフォルトの名無しさん
21/03/24 18:12:34.74 uMlO6v/T.net
>>248
ディレクトリを指定して開けないので使いづらい

254:デフォルトの名無しさん
21/03/24 19:38:25.90 d/Fx9DKH.net
>>249
-dで指定できない?

255:デフォルトの名無しさん
21/03/24 21:27:53.44 KCz6csQE.net
>>250
改めてアップデートしてみた試したけど
最近のバージョンだと、指定できるようになったんだな
さらに1.6でコンテキストメニューにデフォルトで登録されるようになってた
ただ、相変わらずライブラリやドライブで開くことはできないようだねぇ

256:デフォルトの名無しさん
21/03/26 15:46:43.29 9VbgFvvG.net
>>248
なるほど
そろそろ移行したほうがいいのかな

257:デフォルトの名無しさん
21/03/26 17:43:50.10 vSybir0X.net
ストアアプリという時点でゴミ

258:デフォルトの名無しさん
21/03/26 18:20:21.52 moYXNnAH.net
ストアアプリもマトモなやつは増えてきたよ
UWPのタブレットUI強制やら特大ウンチ機能制限やらがだいぶ撤廃されて、デスクトップアプリと大差なくなったからね、ようやく
まぁ遅きに失した感あるんですがね

259:デフォルトの名無しさん
21/03/26 20:02:56.96 Wy51+x+D.net
wt画面に複数ファイルD&Dすると全部表示されて便利だわ
コマンドの引数に使える
cmd画面だと一個だけだ

260:デフォルトの名無しさん
21/03/26 20:16:38.66 yyPdQtcN.net
ストアって時点でマトモとかそういう問題じゃないんだがな
OSにプリインストールでもされてれば別だが

261:デフォルトの名無しさん
21/03/26 20:25:35.57 yyPdQtcN.net
gitにPreinstallKit.zipってあるのな
ゴミは撤回しとくわ

262:デフォルトの名無しさん
21/03/26 20:41:58.26 Wy51+x+D.net
conhost.exe使ってれば

263:デフォルトの名無しさん
21/03/26 20:44:09.41 MahXm1Ia.net
こんなこと言うと怒られるけど早くOS標準にしてくんないかな

264:デフォルトの名無しさん
21/03/26 20:57:10.75 Wy51+x+D.net
まだ動作が若干あやしいぞ
カーソルがずれてたり
意味不明な文字が表示されたり

265:デフォルトの名無しさん
21/04/03 13:19:14.73 YB/KO+42.net
batファイルで並列処理するのってやっぱ無謀?
フォルダ内の画像を4並列で別の形式に変換したいみたいなやつ

266:デフォルトの名無しさん
21/04/03 13:43:34.69 vSOTAguS.net
>>261
過去ログにあるから漁れ

267:デフォルトの名無しさん
21/04/03 18:07:00.76 YB/KO+42.net
>>262
%10までのスレを「並列」で検索したけどそれらしいものは見つからなかったよ

268:デフォルトの名無しさん
21/04/03 19:12:28.03 vSOTAguS.net
>>263
スレリンク(tech板:857番)

269:デフォルトの名無しさん
21/04/03 19:48:52.56 YB/KO+42.net
>>264
なるほど
tasklistでプロセスが生きてるか確認ってのは思いついたけどプロセス数を数えられるのは知らなかった

270:デフォルトの名無しさん
21/04/03 21:06:39.36 vSOTAguS.net
ただなあ
画像変換ごとき瞬時に終わるのでタスク監視でカウントしてる暇がないんじゃないかと

271:デフォルトの名無しさん
21/04/03 21:39:55.57 YWCwVZAz.net
何か昔書いたレスが掘り起こされてるw
画像だったら RalphaPlus を使っちゃうな
フリーでないシェア版だけど64bit版でメモリ不足になることもまずなくて、
32bit版では落ちてしまうような、大きめな16画像並列とかやっても問題ないし、
変換設定ファイルをいくつも作成できるので、バッチから呼び出すのにも
都合よくて便利、おすすめ
4並列程度ならフリーのでも多分問題ないと思う、並列処理の並列(多重起動)したいなら
シェア版が必要になるけど

272:デフォルトの名無しさん
21/04/03 21:40:52.86 YB/KO+42.net
>>266
最近の画像規格は変換に時間かかる上CPU使い切らないという事が多々あるからそこらへんは大丈夫だと思う
まだ試してないけど

273:デフォルトの名無しさん
21/04/04 12:25:17.64 BHN4NYpU.net
外部ツールに頼るんならpwshの力ちょっも借りてもいいのでは
echo file1 ... | % -parallel {コマンド $_; ...}
$_はfile_n、ジョブ数のデフォルトは5
もしかしたらプリインストールの古いやつでは動かないかも

274:デフォルトの名無しさん
21/04/09 23:29:04.49 0EdakHoK.net
すみません、勉強不足なのですが教えていただけますでしょうか。
コマンドプロンプトで、出力結果から特定の値だけ抜き出したいのですが、
1行に表示される一部だけ 文字数以外で指定ってできないでしょうか?
ADのユーザ名を検索して日本語名だけ抽出したいのですが
dsquery user -samid "username" で検索して出てくる
"CN=XXX XXX,OU=ouname,DC=Dcname,DC=local "
CN= のあとのXXX XXXだけ変数にいれたいのですが出来なくて困っています。

275:デフォルトの名無しさん
21/04/10 00:43:06.37 lls/f8GA.net
for /f "delims==, tokens=2" %%i in ("CN=XXX XXX,OU=ouname,DC=Dcname,DC=local ") do echo %%i

276:デフォルトの名無しさん
21/04/10 11:17:28.20 QzAXiJxN.net
>>271
ありがとうございます。
そもそも自分のやりたいこと書かずにすみません、
自分の環境なのかうまくうごきませんでした。
batファイルでADから実行している利用者情報をCSVかなにかでエクスポートしようとしていまして
usernameだとログイン中のIDで表示されるので
dsquery user -samid %usernam%
とやって、cn=に出てくる日本語名だけを抽出したかったのですが、
皆さまだったらどのような方法をされるのでしょうか。

277:デフォルトの名無しさん
21/04/10 12:23:55.67 bRqDVIlt.net
現在進行系の質問ありますけど追加質問させてください
for /F %A in ("テスト") do echo %A %A
としたときに「テスト テスト」が出力されますが
「テスト %A」を出したいときはどうすればいいですか?

278:デフォルトの名無しさん
21/04/10 12:28:34.76 bRqDVIlt.net
連投すみません
for /F %B in ("テスト") do echo %B %A
もありなんですけど%のエスケープ知りたいです

279:デフォルトの名無しさん
21/04/10 13:02:42.59 lls/f8GA.net
こっちでは dsquery を試せないので推測で
@echo off
for /f "delims==, tokens=2" %%i in ('dsquery user -samid %USERNAM%') do set ver=%%i
echo %ver%
pause

280:デフォルトの名無しさん
21/04/10 13:04:44.20 lls/f8GA.net
バッチで実行して

281:デフォルトの名無しさん
21/04/10 13:10:22.83 lls/f8GA.net
よくわからんが %USERNAM% でいいの? E は?

282:デフォルトの名無しさん
21/04/10 13:13:27.40 IU1rFRRP.net
>>273
set テスト=%A
for /f %A in ("テスト") do call echo %A %%A%
バッチは%→%%と重ねる事で%のエスケープ出来るけどコマンドプロンプトでは効かない
環境変数なら
echo %cd% %^cd% "%^cd%" ^"%^cd%"
でエスケープ可能だけど
for変数は>>274しか無いかも
for変数はアルファベットが都合悪いならメタ文字以外の記号も使えるしwin10で試したらひらがなも行けた

283:デフォルトの名無しさん
21/04/10 13:39:39.87 ULgsRvVE.net
フィルタリング機能はおそまつなので
275のように一旦全部のユーザーをファイルに書き出してやったほうがいい
あとはテキストエディタでも表作製ソフトでもPowershellとかでもいいけど
正規表現でフィルターすればいい
というかdsqueryコマンドにフィルター機能ぐらいありそうなもんだけど
別のコマンドと組み合わせて使うならエスケープ文字は^なので
for ~ in ('dsquery ~^|dsget ~')

284:デフォルトの名無しさん
21/04/10 13:46:42.23 ULgsRvVE.net
unicodeが使われてる可能性もあるので
安全性を取るならbatを使わずにdsqueryの出力を直接ファイルに書いた後に加工するのがいいかも
とかcsvとか言ってるのでどうせエクセルとかで使うんなら
そのまま"CN=~"の出力を読み込ませたあとで加工とかも出来そうなもんだけど

285:デフォルトの名無しさん
21/04/10 14:16:22.00 ULgsRvVE.net
あれ全ユーザーとかじゃなくて一つのユーザーだけなのか
どっちにしろPowershellでやった方が楽だと思うよ

286:デフォルトの名無しさん
21/04/10 20:33:13.55 hTFrpgtD.net
>>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!
 )

287:デフォルトの名無しさん
21/04/10 22:12:46.25 kfNVSQGB.net
>unicodeが使われてる可能性もあるので
これがあるからバッチでは原則処理しない
>>282みたいなことしてたらその内ひどい事になる

288:デフォルトの名無しさん
21/04/11 00:53:55.03 X+5g0Z/F.net
>>275
ありがとうございます。%username%ですね Eが抜けました。
CSVはエクセルではなくてserverにOffice入れてないと、adidの日本語名にするのもちょっと骨でした。
ご指摘通りpowershellでできればいいのでしょうが
powershellは出来る人がいないのとバッチが多すぎて一部分を直して運用していました。

289:デフォルトの名無しさん
21/04/11 05:12:32.83 8j1o2avA.net
for /F %A in ("テスト") do @echo %A %^^A| more

290:デフォルトの名無しさん
21/04/26 14:11:50.54 FVrz/3IC.net
実行中のプロセスのCPUアフィニティを変更するコマンドは何ですか?
タスクマネージャの[詳細]タブで変更したり、
startコマンドの/affinityスイッチは知ってます。
ちなみに、目的はshogigui.exeとaperyに同じコアを使わせないことです。

291:デフォルトの名無しさん
21/04/26 16:39:41.34 5VqWgajG.net
Vector に LimitCPU とかあるけど使った事ない

292:デフォルトの名無しさん
21/04/26 17:25:33.86 vupwGLI3.net
実行中のプロセスで変更するコマンドって見当たらないな
タスクマネージャーとかのGUIアプリしか見つからない
俺も知りたいわ

293:デフォルトの名無しさん
21/04/26 18:44:26.08 g+6GvbLi.net
SET
 powershell -c "(get-process hoge).processoraffinity=1"
GET
 powershell -c "get-process hoge|select-object processoraffinity"

294:デフォルトの名無しさん
21/04/26 19:13:44.30 g+6GvbLi.net
GET/SETで分けることもないか(代入か否かで)
あと、同じプロセスイメージが複数ある場合の例(psはget-processのalias)
 powershell -c "ps chrome|%{$_.processoraffinity}

295:デフォルトの名無しさん
21/04/27 11:42:30.79 SlvFgNx9.net
>>289
できたー!!
㌧x

296:デフォルトの名無しさん
21/04/28 18:09:24.25 TBHOCaij.net
実行中のプロセスをキルした後、exeを起動する.batは組めないでしょうか?
ご教授お願いしたいです。

297:デフォルトの名無しさん
21/04/28 19:31:14.30 Sz6ocakQ.net
実行中のプロセスを全部キルしたら多分Windowsがまともに動かなくなるぞ

298:デフォルトの名無しさん
21/04/29 12:33:19.43 UHw0q87H.net
taskkillしてstartすりゃいいんじゃねーの

299:デフォルトの名無しさん
21/04/30 13:18:51.37 QntBUF73.net
プロセスが自爆して自分の死後にexeを起動って意味?

300:デフォルトの名無しさん
21/04/30 13:34:43.19 KlpY5+7M.net
>>292
キルしてもすぐ消えないプロセスがあるから失敗するということかな
キルしたらもう一度プロセスが消えたかどうか確認しあればまたキルする
消えたら再起動
live2chは終了やキルしても消えない時がある(ゾンビ)

301:デフォルトの名無しさん
21/04/30 22:44:43.29 1FoMz0PJ.net
強制終了なんてするもんじゃないのよ

302:デフォルトの名無しさん
21/05/05 17:03:35.09 jBlPB1Jr.net
>>296
>live2chは終了やキルしても消えない時がある(ゾンビ)
アンデッドには効かなかったはず…

303:デフォルトの名無しさん
21/05/05 17:56:35.30 PPo4cFAu.net
killできない場合のことを考えておくことだね
じゃないと無限ループになる

304:デフォルトの名無しさん
21/05/11 09:43:15.42 2aTzy8bW.net
%0|%0

305:デフォルトの名無しさん
21/05/11 13:03:03.56 Ql061JAF.net
このスレってこういう呪文書く人多いよね
enabledelayedexpansionとかも呪文にしか見えないし

306:デフォルトの名無しさん
21/05/11 13:35:53.83 IBnoRfMr.net
にほんでいちばんさむいのはわっかないです
みたいな綴り

307:デフォルトの名無しさん
21/05/11 14:14:27.26 2aTzy8bW.net
稚内は平均気温は低いけど最低気温は内陸部に負けるね

308:デフォルトの名無しさん
21/05/11 14:46:36.64 XdIg8UA/.net
enable delayed expansion

309:デフォルトの名無しさん
21/05/11 14:52:11.19 0OaQcACp.net
/d- とどっちがいい?

310:デフォルトの名無しさん
21/05/11 20:34:18.03 1ruivVGt.net
EnableDelayedExpansionって書けばちょっとだけ見やすくなる

311:デフォルトの名無しさん
21/05/12 02:11:31.96 Suipbxh4.net
CPU温度をコマンドで取得したいのですが、OS標準の方法は無理ですかね
WMI(ACPI)は固定値の温度が返ってきて取得不可でした
OpenHardwareMonitorもダメ(恐らく内部でWMIを呼び出してる)



312:当然ながらhwmonitorやCoreTempでは取得できますが、値をバッチで取り込みたいんですよね…



313:デフォルトの名無しさん
21/05/12 02:33:26.74 XehBH/T/.net
>>307
OpenHardwareMonitorReport
URLリンク(github.com)

314:デフォルトの名無しさん
21/05/12 20:32:09.46 Suipbxh4.net
>>307
コマンドラインに出力される以外はOpenHardwareMonitorの実行内容と同じ結果でした
1ボードマイコンのlinuxは
cputemp=`cat /sys/class/thermal/thermal_zone0/temp`
とかで簡単に温度が取れるのになんでじゃろ

315:デフォルトの名無しさん
21/05/12 20:32:24.17 Suipbxh4.net
>>308でした

316:デフォルトの名無しさん
21/05/12 21:20:49.69 MeE+nXbq.net
CoreTempでログ有効にして最終行取るとか

317:デフォルトの名無しさん
21/05/12 22:00:07.42 yHTntpLS.net
出力をgrepとsedあたりで拾えたけど、それじゃダメなの?
BusyBox入れておけばどちらも使える

318:デフォルトの名無しさん
21/05/12 23:05:17.82 Suipbxh4.net
>>311
ありがとうございます
CoreTempのログから取得することにしました

319:デフォルトの名無しさん
21/05/14 23:44:02.34 T4yhaoFz.net
おかげさまでCPU自動温度調節バッチができました
CoreTempのログ出力間隔がなぜかGUIの画面で設定が反映されないのでCoreTemp.iniを直接いじってLogInt=3;にしました

320:デフォルトの名無しさん
21/05/21 14:43:20.40 86NTjzBm.net
引数で✳︎1って書いて実行するとダメで
✳︎✳︎1と書くと実行してくれるというか
✳︎1として認識してくれる
こういうのなんて言うんだっけ?

321:デフォルトの名無しさん
21/05/21 15:45:05.64 PeQGb4Ft.net
エスケープ?

322:デフォルトの名無しさん
21/05/21 15:56:12.09 Ui9xkSyb.net
エスケープ文字でいいのかな?
どう伝えたらいいか迷ってました。
ありがとうございます!!

323:デフォルトの名無しさん
21/07/29 10:35:28.68 Sx47SrPe.net
dir *1* がおかしい表示をする

324:デフォルトの名無しさん
21/07/29 11:36:44.20 tRu2KZQa.net
~1は付いてるだろ

325:デフォルトの名無しさん
21/07/29 17:13:03.84 YC90wu7g.net
dir/x *~*
やってみろ

326:デフォルトの名無しさん
21/07/29 19:38:39.37 a6W4XitR.net
>>318
>dir *1* がおかしい表示をする
うちもだ
何コレ

327:デフォルトの名無しさん
21/07/29 19:43:02.51 YC90wu7g.net
直ぐ上のレスぐらい読め

328:デフォルトの名無しさん
21/07/29 20:44:32.26 y5w0GI0N.net
URLリンク(www.atmarkit.co.jp)

329:デフォルトの名無しさん
21/07/29 20:53:42.01 YC90wu7g.net
dir /b | find "1"

330:デフォルトの名無しさん
21/08/22 10:21:12.87 ROFzyAkg.net
お教え下さい
バッチファイルでなんとかあれこれ作っているんですが、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個前を取る方法しか無いのでしょうか
ほとんど理解していないレベルですが、お知恵をお貸しいただければ幸いです

331:デフォルトの名無しさん
21/08/22 12:42:26.74 4kURdFV7.net
>>325
配列の最後の要素は[-1]で指定できるよ
URLリンク(stedolan.github.io)

332:デフォルトの名無しさん
21/08/22 13:17:28.64 ROFzyAkg.net
>>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
とやるとエラーになります
またもやお教えいただけると助かります
よろしくお願い致します

333:デフォルトの名無しさん
21/08/22 13:25:20.71 ROFzyAkg.net
連投すみません
自己解決しました
パイプで別のコマンドを繋げてる時はカッコ内では | だけではなく ^| としなくてはならないのですね

334:デフォルトの名無しさん
21/08/22 15:01:46.57 QCLSPIvL.net
式評価が、行読み込み時とfor文の括弧内とで2回行われるので

335:デフォルトの名無しさん
21/08/22 16:39:15.67 AGm1+oJ3.net
>>327
(`コマンド`)やろ
"が一個なのも変

336:デフォルトの名無しさん
21/08/22 16:48:11.12 AGm1+oJ3.net
inもないし

337:デフォルトの名無しさん
21/08/22 19:09:07.18 ROFzyAkg.net
ああすみません、うる覚えてで打ってました
for /f "usebackq" %%a in (`curl -X GET %henkanurl% ^| jq -r .body.playback.video_link[-1].url`) do set m3u8url=%%a
これで無事に動きました

338:デフォルトの名無しさん
21/08/23 21:28:01.99 Tt89WUNP.net
>>332
う「ろ」覚えな

339:デフォルトの名無しさん
21/08/23 21:36:38.14 rdOjiFig.net
×うろ
○うる

340:デフォルトの名無しさん
21/08/23 23:16:48.35 0ziHLJ5Z.net
売る

341:デフォルトの名無しさん
21/08/24 07:13:42.95 ttKQ7L6u.net
うる覚えは誤り、または誤りから派生した方言だとされている
うろ 空洞
うろん 怪しい、疑わしい、乱雑
から来ているから 「うろ覚え」 が正しいよ
見せて → 見して
などと同様の変化でもあるだろう
見(い)せ(え)て(え) → 見(い)し(い)て(え)
と母音が前の音に引っ張られ変化するパターン
言い易くなるからか幼児語などに多く見られ、都会に比べての昔の田舎の人など知能の劣る者らが用いる傾向がある

342:デフォルトの名無しさん
21/08/24 07:54:41.61 7aPnDOA3.net
usebackqいらん

343:デフォルトの名無しさん
21/08/24 11:06:35.68 A9/4ufwo.net
お世話になります。
---- 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
とならないのはなぜ?
また、このような出力を得たい時はどうすればよいですか?

344:デフォルトの名無しさん
21/08/24 11:10:52.17 7aPnDOA3.net
set /? 読め

345:デフォルトの名無しさん
21/08/24 11:22:21.23 qugHDfsR.net
callでサブルーちんに飛ばせばカウントされるよ
for内は極力シンプルに

346:デフォルトの名無しさん
21/08/24 13:03:43.42 ttKQ7L6u.net
@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

347:デフォルトの名無しさん
21/08/25 00:21:43.26 NZXLvzYN.net
07:    CALL ECHO %%n%% : %%%%a

348:338
21/08/25 08:35:00.27 CHwZclnY.net
340,341,342 ありがとう。
遅延?がどうこうって、勉強になりました。
単純な展開ですので、341の !var! 展開を使います。

349:デフォルトの名無しさん
21/08/25 12:37:01.24 sbFyoxUW.net
ヘルプ読んでから質問してね

350:デフォルトの名無しさん
21/08/25 15:31:20.26 Fod5ZYNl.net
CALL %FILENAME%
CALL "%FILENAME%"
職場のパソコン変えたら上で動かなくて下に修正することになったんだけど仕様変更あった?

351:デフォルトの名無しさん
21/08/25 17:21:04.65 sbFyoxUW.net
FILENAMEに区切り文字は無い?

352:デフォルトの名無しさん
21/08/25 18:09:16.31 eN7VzoDp.net
echo onなら環境変数展開後のコマンドラインが表示される
なにがおかしいのかステップ実行で確認してから質問してくれ

353:デフォルトの名無しさん
21/08/25 18:59:42.87 rpvOn9yc.net
>>347
ステップ実行して抜き出したのがこれなんだ

354:デフォルトの名無しさん
21/08/25 19:00:54.62 rpvOn9yc.net
>>346
Onedrive同期してるフォルダーだからスペースとか今までなかったの増えてるかも

355:デフォルトの名無しさん
21/08/25 19:11:06.73 sbFyoxUW.net
区切り文字あればそれが原因でしょ
引数がフルパスなら上位フォルダもチェック
念の為にきくけどバッチファイルだよね


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