拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
【.cmd】 バッチファイルスクリプト %12 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
それ以前の過去スレ
%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://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1 http://pc11.2ch.net/test/read.cgi/tech/1178281991/
探検
【.cmd】 バッチファイルスクリプト %13 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
2018/11/21(水) 14:52:07.84ID:v84I4o+L
518デフォルトの名無しさん
2019/11/06(水) 01:50:43.91ID:ZR40S1lI Ruby で作った。
最後の(終) の部分は、数字とみなされないので、無視される
str = "11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)"
ary = str.split( "__" ) # 数字部分を配列に入れる
ary.map!( &:to_f ) # 文字列を浮動小数点へ変換する
p ary.inject( :+ ) / ary.length # 合計 / 要素数
最後の(終) の部分は、数字とみなされないので、無視される
str = "11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)"
ary = str.split( "__" ) # 数字部分を配列に入れる
ary.map!( &:to_f ) # 文字列を浮動小数点へ変換する
p ary.inject( :+ ) / ary.length # 合計 / 要素数
519デフォルトの名無しさん
2019/11/06(水) 03:37:02.69ID:sEBZ5Hrs スレタイも読めないメクラか?
ドヤりたいなら該当スレへ逝け
ドヤりたいなら該当スレへ逝け
520デフォルトの名無しさん
2019/11/06(水) 15:19:13.85ID:Z1XrM+Fl :ALCL
@echo off &setlocal enabledelayedexpansion
echo 少数切り捨て。少数以下は求めたい桁数まで0埋めして入力
echo 少数2位まで求めたい場合 ex: 12.4 -^> 1240
echo 00で Clear, 000で AllClear
set i=
:LOOP
set /a i+=1
:INPUT
set /p N%i%=数値を入力 :
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
if !N%i%!==000 goto :ALCL
if !N%i%!==00 (
if %i% leq 2 goto :ALCL
if %i% gtr 2 set /a i-=2
)
set s=
set r=
for /l %%a in (1,1,%i%) do (
set s=!s! !N%%a!
set /a r+=!N%%a!
)
set /a r/=%i%
echo %s% : %r%
goto :LOOP
@echo off &setlocal enabledelayedexpansion
echo 少数切り捨て。少数以下は求めたい桁数まで0埋めして入力
echo 少数2位まで求めたい場合 ex: 12.4 -^> 1240
echo 00で Clear, 000で AllClear
set i=
:LOOP
set /a i+=1
:INPUT
set /p N%i%=数値を入力 :
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
if !N%i%!==000 goto :ALCL
if !N%i%!==00 (
if %i% leq 2 goto :ALCL
if %i% gtr 2 set /a i-=2
)
set s=
set r=
for /l %%a in (1,1,%i%) do (
set s=!s! !N%%a!
set /a r+=!N%%a!
)
set /a r/=%i%
echo %s% : %r%
goto :LOOP
521デフォルトの名無しさん
2019/11/06(水) 15:48:22.56ID:Z1XrM+Fl set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
上のに真ん中の行追加で
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
上のに真ん中の行追加で
522デフォルトの名無しさん
2019/11/06(水) 20:50:16.92ID:wTTuQQRz バッチファイルは難しすぎ!
引数の概念がLinuxと全く違う
引数の概念がLinuxと全く違う
523デフォルトの名無しさん
2019/11/06(水) 23:04:29.95ID:wTTuQQRz 空白が入ったパスをバッチファイルにわたすために
ダブルクォートで括らないといけないが、
それをやると、変数にダブルクォートが入るのがクソなんだな
しかも、if "%1" == "" とか書くと、引数がダブルクォート
一個だったときにエラーが出るとかいろいろ破綻してる
ダブルクォートで括らないといけないが、
それをやると、変数にダブルクォートが入るのがクソなんだな
しかも、if "%1" == "" とか書くと、引数がダブルクォート
一個だったときにエラーが出るとかいろいろ破綻してる
524デフォルトの名無しさん
2019/11/07(木) 01:48:00.01ID:4r3ojeSB525デフォルトの名無しさん
2019/11/07(木) 04:42:48.88ID:nSoHFrko >>511
@for %%s 以下略じゃダメなの?
@for %%s 以下略じゃダメなの?
526デフォルトの名無しさん
2019/11/07(木) 06:29:37.44ID:lb8cogBR527デフォルトの名無しさん
2019/11/07(木) 06:59:41.26ID:LFqMQC4+ >>523
%~1で外せるでしょ?
%~1で外せるでしょ?
528デフォルトの名無しさん
2019/11/07(木) 07:54:19.69ID:isVFtAa0529デフォルトの名無しさん
2019/11/07(木) 09:58:22.71ID:d6TMJd25 >>528
冗談で書いたんだが。。これなら同様のアプリ探した方がいいんじゃない?
あと以下修正、>>521部分も含む
:INPUT
set N%i%=
set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
Clear後に空入力繰り返すと消したのが戻ってまたClearしてと繰り返す挙動が直る
実害無いだろうから敢えてそのままにするのも有り
既存の環境変数に set /p で空入力しても 空で上書き初期化されずそのまま残るみたい
冗談で書いたんだが。。これなら同様のアプリ探した方がいいんじゃない?
あと以下修正、>>521部分も含む
:INPUT
set N%i%=
set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)
Clear後に空入力繰り返すと消したのが戻ってまたClearしてと繰り返す挙動が直る
実害無いだろうから敢えてそのままにするのも有り
既存の環境変数に set /p で空入力しても 空で上書き初期化されずそのまま残るみたい
530デフォルトの名無しさん
2019/11/07(木) 10:37:33.42ID:sEmiRyTj >>527
どこ見てもその程度。みんな適当なんだよな。
まず最初に書いた例から。バッチファイル(test.bat)を
1.このように書いた時
if "%1" == "" echo 引数なし
> test.bat "
コマンドの構文が誤っています。
2.このように書いた時
if "%~1" == "" echo 引数なし
> test.bat "
引数なし
※↑間違い。「"」という引数があります。
3. このように書いた時
if %~1 == "" echo 引数なし
> test.bat "
echo の使い方が誤っています。
どこ見てもその程度。みんな適当なんだよな。
まず最初に書いた例から。バッチファイル(test.bat)を
1.このように書いた時
if "%1" == "" echo 引数なし
> test.bat "
コマンドの構文が誤っています。
2.このように書いた時
if "%~1" == "" echo 引数なし
> test.bat "
引数なし
※↑間違い。「"」という引数があります。
3. このように書いた時
if %~1 == "" echo 引数なし
> test.bat "
echo の使い方が誤っています。
531デフォルトの名無しさん
2019/11/07(木) 12:19:13.92ID:Z6Qb1qTa Windowsバッチの仕様がダメダメというのはそのとおりだが、
引数が " だけというのは、かなり特殊な想定だよな。
これが大丈夫という言語ってあるのか?
この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、
アプリの方で、\"〜\"で吐き出すように設定して、
バッチファイルで、この\を削除するようにすることで、
引数展開でおかしな動作をさせないようにしている。
e.g. fxのOpenWithアドオンなど
引数が " だけというのは、かなり特殊な想定だよな。
これが大丈夫という言語ってあるのか?
この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、
アプリの方で、\"〜\"で吐き出すように設定して、
バッチファイルで、この\を削除するようにすることで、
引数展開でおかしな動作をさせないようにしている。
e.g. fxのOpenWithアドオンなど
532デフォルトの名無しさん
2019/11/07(木) 12:32:04.92ID:sEmiRyTj >>531
言語関係ない。コマンドプロンプトの仕様だから
例えばechoでダブルクォートだけを出力したいなら
echo " と書くしか無い。
PowerShellとかコマンドプロンプトを使わないなら
閉じてないダブルクォートの扱いを変えることは可能だが、
コマンドプロンプトはもうどうしようもないw
そしてこれ(もともとはMS-DOSの仕様)を前提に
Windows版のC言語とかのCRTライブラリが作られ、
mainに渡る前に、そういう文字列を解釈するようになってる。
言語関係ない。コマンドプロンプトの仕様だから
例えばechoでダブルクォートだけを出力したいなら
echo " と書くしか無い。
PowerShellとかコマンドプロンプトを使わないなら
閉じてないダブルクォートの扱いを変えることは可能だが、
コマンドプロンプトはもうどうしようもないw
そしてこれ(もともとはMS-DOSの仕様)を前提に
Windows版のC言語とかのCRTライブラリが作られ、
mainに渡る前に、そういう文字列を解釈するようになってる。
533デフォルトの名無しさん
2019/11/07(木) 12:33:31.15ID:sEmiRyTj > この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、
> アプリの方で、\"〜\"で吐き出すように設定して、
いきあたりばったりなんだよなw
本当にここらへんの奴らは適当
> アプリの方で、\"〜\"で吐き出すように設定して、
いきあたりばったりなんだよなw
本当にここらへんの奴らは適当
534デフォルトの名無しさん
2019/11/07(木) 12:40:37.56ID:sEmiRyTj https://thinca.hate
nablog.com/entry/20100210/1265813598
\ は、
ダブルクォートの内外を問わず、" の前に \ を前置すると " 自身を表現できる。
\\" とすると \" の \ をエスケープしたことになり、 \" になる。この " は特殊文字である。
\\\" とすると \\ + \" になり、 \" になる。この " は " 文字自身である。
以下、\ が増える度に上記のようなエスケープを繰り返す。
\\\\" → \\" (" は特殊文字)
\\\\\" → \\" (" は通常文字)
上記以外の場所にある \、つまり後に " が続かない \ は、いくつ重なっていてもその文字自身になる。
nablog.com/entry/20100210/1265813598
\ は、
ダブルクォートの内外を問わず、" の前に \ を前置すると " 自身を表現できる。
\\" とすると \" の \ をエスケープしたことになり、 \" になる。この " は特殊文字である。
\\\" とすると \\ + \" になり、 \" になる。この " は " 文字自身である。
以下、\ が増える度に上記のようなエスケープを繰り返す。
\\\\" → \\" (" は特殊文字)
\\\\\" → \\" (" は通常文字)
上記以外の場所にある \、つまり後に " が続かない \ は、いくつ重なっていてもその文字自身になる。
535デフォルトの名無しさん
2019/11/07(木) 12:53:05.11ID:LDERshfw >>528
バッチ/シェルスクリプトは、複雑なプログラミングをするものじゃない!
Ruby, PowerShell, VBScript などを使うべき
まず、データの仕様を作るべき。
その程度のデータなら、普通は、CSV 形式とか
1. どこかのサイトから、データの集積物を取得する
2. それをパースして、CSV 形式に変換する
一旦、CSV へ変換すれば、
その後は、Rubyなど、様々なプログラミング言語で処理できる
1の部分は、Ruby, Selenium WebDriver などで、クローラー・スクレイピングも出来る
バッチ/シェルスクリプトは、複雑なプログラミングをするものじゃない!
Ruby, PowerShell, VBScript などを使うべき
まず、データの仕様を作るべき。
その程度のデータなら、普通は、CSV 形式とか
1. どこかのサイトから、データの集積物を取得する
2. それをパースして、CSV 形式に変換する
一旦、CSV へ変換すれば、
その後は、Rubyなど、様々なプログラミング言語で処理できる
1の部分は、Ruby, Selenium WebDriver などで、クローラー・スクレイピングも出来る
536デフォルトの名無しさん
2019/11/07(木) 12:58:16.29ID:lb8cogBR >>531
まったくスレチだけどGnuPGのパスワードを思い出した
引用符だけのパスワードを渡す場合は
pass "
>gpg -c --passphrase ^""" hoge.txt
pass ""
>gpg -c --passphrase """""" hoge.txt
pass """
>gpg -c --passphrase ^""""""""" hoge.txt
何でこうなるかは知らんがGnuPGだけの話さ
コマンド側でどう引数処理するかだよな
バッチでは普通ダメだね
まったくスレチだけどGnuPGのパスワードを思い出した
引用符だけのパスワードを渡す場合は
pass "
>gpg -c --passphrase ^""" hoge.txt
pass ""
>gpg -c --passphrase """""" hoge.txt
pass """
>gpg -c --passphrase ^""""""""" hoge.txt
何でこうなるかは知らんがGnuPGだけの話さ
コマンド側でどう引数処理するかだよな
バッチでは普通ダメだね
537デフォルトの名無しさん
2019/11/07(木) 13:04:39.19ID:sEmiRyTj ダブルクォートを"""と3個やっても動かないときは、
"""" に増やして動くか
""""" に増やして動くか
""""" に増やして動くか
これぐらいまで試す
あるある
"""" に増やして動くか
""""" に増やして動くか
""""" に増やして動くか
これぐらいまで試す
あるある
538デフォルトの名無しさん
2019/11/07(木) 13:26:56.23ID:Z6Qb1qTa >>536
クォートの先頭にエスケープが必要な場合でも、
後ろの方は何故かエスケープが不要なことがあるんだよな。
*nix系から移植したプログラムで、こういう事がたまに起きる。
いずれにしても、謎仕様…
クォートの先頭にエスケープが必要な場合でも、
後ろの方は何故かエスケープが不要なことがあるんだよな。
*nix系から移植したプログラムで、こういう事がたまに起きる。
いずれにしても、謎仕様…
539デフォルトの名無しさん
2019/11/08(金) 05:39:07.91ID:78hADO4V set x=echo
%x% qqq
set a=y
set %a%=3
echo %y%
どちらもできた
%x% qqq
set a=y
set %a%=3
echo %y%
どちらもできた
540デフォルトの名無しさん
2019/11/09(土) 12:37:18.78ID:9Z+ynpem もう無理だw
if "%value%" == "" echo match
こんな感じのコードで、%value% にどんな文字
(ダブルクオート、スペース、カンマ、その他記号)が
入っていてもエラーにならないというコードを
バッチファイルで書くのは不可能だw
お手上げ\(-o-)/
if "%value%" == "" echo match
こんな感じのコードで、%value% にどんな文字
(ダブルクオート、スペース、カンマ、その他記号)が
入っていてもエラーにならないというコードを
バッチファイルで書くのは不可能だw
お手上げ\(-o-)/
541デフォルトの名無しさん
2019/11/09(土) 12:55:41.49ID:hmJLHo7y IF NOT DEFINED VALUE
542デフォルトの名無しさん
2019/11/09(土) 13:02:21.70ID:9HGwW/1Y543デフォルトの名無しさん
2019/11/09(土) 13:03:25.05ID:hmJLHo7y setlocal enabledelayedexpansion
if "!value!"=="abc" echo match
endlocal
if "!value!"=="abc" echo match
endlocal
544デフォルトの名無しさん
2019/11/09(土) 13:14:34.88ID:9HGwW/1Y あれ?マジで?それだけでいけちゃうの?
545デフォルトの名無しさん
2019/11/09(土) 13:22:47.16ID:hmJLHo7y これな、"abc"の方が要注意なんよ
^とか!とか入ってるとやばいかも
setlocalの前に代入して
if !a!==!b! とかやった方がええかもな
^とか!とか入ってるとやばいかも
setlocalの前に代入して
if !a!==!b! とかやった方がええかもな
546デフォルトの名無しさん
2019/11/09(土) 13:53:03.27ID:9HGwW/1Y >>545
右側、固定値なら大丈夫だよね?
右側、固定値なら大丈夫だよね?
547デフォルトの名無しさん
2019/11/09(土) 14:00:20.08ID:hmJLHo7y うん多分、変な文字入って無けりゃね
遅延モードだと全角文字のリテラルにも一部副作用が有るかも
遅延モードだと全角文字のリテラルにも一部副作用が有るかも
548デフォルトの名無しさん
2019/11/09(土) 14:07:53.35ID:9HGwW/1Y なんだよ、全角文字の副作用って・・・
せっかく進んだのにw
せっかく進んだのにw
549デフォルトの名無しさん
2019/11/09(土) 14:15:55.11ID:hmJLHo7y setlocalの外で代入すりゃ問題ない
遅延の中では書くな
あと、if !a!==!b! に " はたぶん不要
遅延の中では書くな
あと、if !a!==!b! に " はたぶん不要
550デフォルトの名無しさん
2019/11/09(土) 14:26:55.47ID:9HGwW/1Y setlocalの中で代入するとなにか問題があるのか・・・
551デフォルトの名無しさん
2019/11/09(土) 14:37:46.76ID:hmJLHo7y ええと
setlocal enabledelayedexpansion 〜 endlocal の中だよ
setlocal enabledelayedexpansion 〜 endlocal の中だよ
552デフォルトの名無しさん
2019/11/09(土) 15:15:35.38ID:hmJLHo7y553デフォルトの名無しさん
2019/11/09(土) 17:06:16.41ID:hmJLHo7y でもif文自体が挙動不審だからなあ
if "ーー"=="""" echo 同じ
if "ーー"=="""" echo 同じ
554デフォルトの名無しさん
2019/11/09(土) 20:49:07.09ID:9HGwW/1Y555デフォルトの名無しさん
2019/11/09(土) 20:57:33.36ID:9HGwW/1Y >>553
それも enabledelayedexpansion 使えば大丈夫じゃない?
setlocal enabledelayedexpansion
set A=%1
if !A! == "" echo 同じ
もうやだこの言語(?)
それも enabledelayedexpansion 使えば大丈夫じゃない?
setlocal enabledelayedexpansion
set A=%1
if !A! == "" echo 同じ
もうやだこの言語(?)
556デフォルトの名無しさん
2019/11/09(土) 21:14:31.85ID:9HGwW/1Y @echo off
echo %1
call :LABEL %1
exit /b
:LABEL
echo %*
↓
> test.bat a
a
a
これが普通
> test.bat ^^
call :LABEL exit /b
ECHO は <OFF> です。
頭痛いけどなんとなく理解できる
> test.bat "^"
"^"
"^^"
なんで^増えてんだよwww
echo %1
call :LABEL %1
exit /b
:LABEL
echo %*
↓
> test.bat a
a
a
これが普通
> test.bat ^^
call :LABEL exit /b
ECHO は <OFF> です。
頭痛いけどなんとなく理解できる
> test.bat "^"
"^"
"^^"
なんで^増えてんだよwww
557デフォルトの名無しさん
2019/11/09(土) 21:24:41.89ID:9HGwW/1Y @echo off
setlocal enabledelayedexpansion
echo %1
set A=%1
call :LABEL "%A%"
call :LABEL !A!
call :LABEL "!A!"
exit /b
:LABEL
echo %1
> test.bat "^"
"^"
""""
"^^"
""""
もう意味がわかんないw
これ人間が制御できるものなんか?
setlocal enabledelayedexpansion
echo %1
set A=%1
call :LABEL "%A%"
call :LABEL !A!
call :LABEL "!A!"
exit /b
:LABEL
echo %1
> test.bat "^"
"^"
""""
"^^"
""""
もう意味がわかんないw
これ人間が制御できるものなんか?
558デフォルトの名無しさん
2019/11/10(日) 09:44:25.06ID:fP398yW4 setlocal enabledelayedexpansion は >>540対策で使えるけど、
それ以外はもっと制御が難しいかも・・・
基本は通常のsetlocalで比較のときだけ
部分的に使ったほうが良さそう
今回は頑張ったけど、もうやらない。
それ以外はもっと制御が難しいかも・・・
基本は通常のsetlocalで比較のときだけ
部分的に使ったほうが良さそう
今回は頑張ったけど、もうやらない。
559デフォルトの名無しさん
2019/11/10(日) 15:37:42.63ID:noq81T2Q スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる
560デフォルトの名無しさん
2019/11/10(日) 20:23:39.65ID:u8+xJCBj for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で
for %%i in (a b c) みたいにワイルドカードが含まれてない場合は
ファイルがあるなしに関係なく、a、b、cを繰り返す機能ってことであってますか?
for %%i in (a b c) みたいにワイルドカードが含まれてない場合は
ファイルがあるなしに関係なく、a、b、cを繰り返す機能ってことであってますか?
561デフォルトの名無しさん
2019/11/14(木) 15:51:47.87ID:MT98n7t2 多重フォルダの中身を
一番上のフォルダにまとめるスクリプトってどうやるの?
できればフォルダをドラッグ&ドロップしたいんだけど
一番上のフォルダにまとめるスクリプトってどうやるの?
できればフォルダをドラッグ&ドロップしたいんだけど
562デフォルトの名無しさん
2019/11/14(木) 21:52:50.32ID:ah6E9oLX >>561
for /r %1 %%i in (*) do move "%%i" \
for /r %1 %%i in (*) do move "%%i" \
563デフォルトの名無しさん
2019/11/18(月) 20:56:52.03ID:/+k2TWLn なんかこんなバッチファイルがあったけどうまく動かない
for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagename eq SKRWATCH*" /fo "table" /nh`) do
if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else (START /D C:\Users\user1\Downloads\skrw021 SKRWATCH)
for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagename eq SKRWATCH*" /fo "table" /nh`) do
if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else (START /D C:\Users\user1\Downloads\skrw021 SKRWATCH)
564デフォルトの名無しさん
2019/11/18(月) 21:18:40.00ID:45qFz0UJ >>563
うまく動かないでは状況が不明(エラーxxxが表示とか具体的に)
・tasklistは動くのか?(tasklist /?)
・そのままコピペしてるのなら動かなくて当然
(doの前に全角空白があるし、doの後も改行されてる
起動するパスがexeと空白で区切られてるがタイプミスか)
・対象はそのEXEで間違いないのか、パスに間違いはないか
うまく動かないでは状況が不明(エラーxxxが表示とか具体的に)
・tasklistは動くのか?(tasklist /?)
・そのままコピペしてるのなら動かなくて当然
(doの前に全角空白があるし、doの後も改行されてる
起動するパスがexeと空白で区切られてるがタイプミスか)
・対象はそのEXEで間違いないのか、パスに間違いはないか
565デフォルトの名無しさん
2019/11/18(月) 21:26:40.79ID:45qFz0UJ >起動するパスがexeと空白で区切られてるがタイプミスか
これはフォルダ指定だから記述に問題はなかったね
これはフォルダ指定だから記述に問題はなかったね
566デフォルトの名無しさん
2019/11/19(火) 00:58:21.49ID:f1OS2g5Q >問題はなかったね
問題あるから動かねーんだろwwバカじゃね?
いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ
問題あるから動かねーんだろwwバカじゃね?
いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ
567デフォルトの名無しさん
2019/11/19(火) 03:01:51.46ID:DFw2Dz+B pause & exit
コンソール入力で起動なら exit/b
コンソール入力で起動なら exit/b
568デフォルトの名無しさん
2019/11/20(水) 12:24:50.17ID:2S7bcPNj テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね?
↓なイメージです
key = value
[version]
↓なイメージです
key = value
[version]
569デフォルトの名無しさん
2019/11/20(水) 13:04:27.56ID:Tu0gcZfO batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う
570デフォルトの名無しさん
2019/11/20(水) 13:53:46.39ID:xBPN5HFi エディタでの置換じゃ無理な処理数なん?
batで文字列操作は事故の元
JSかPSでも使えば?
batで文字列操作は事故の元
JSかPSでも使えば?
571デフォルトの名無しさん
2019/11/20(水) 17:43:27.76ID:jZ8vbKIX572デフォルトの名無しさん
2019/11/20(水) 19:20:58.96ID:Tu0gcZfO573デフォルトの名無しさん
2019/11/20(水) 19:53:19.75ID:p2TBD6cq 一行ずつぐるぐる回しながら表示して
[version]だったら、その表示の前に追加すればいいだけじゃん
[version]だったら、その表示の前に追加すればいいだけじゃん
574デフォルトの名無しさん
2019/11/21(木) 09:08:09.78ID:YDFq+t9K いいやPS使ってもらう
575デフォルトの名無しさん
2019/11/21(木) 10:25:48.48ID:Wg+WlOX1 ファイルを一行ずつ読み込んで出力する処理に
ちょこっと手を加えるだけだから簡単だな
ちょこっと手を加えるだけだから簡単だな
576デフォルトの名無しさん
2019/11/21(木) 11:16:31.45ID:LvODftpp 簡単だったら早く教えろよな
キレちゃうぞこのやろう
キレちゃうぞこのやろう
577デフォルトの名無しさん
2019/11/21(木) 11:47:37.77ID:xinrmZtD PSで簡単にできたからもういいわ
578デフォルトの名無しさん
2019/11/21(木) 12:46:53.45ID:7xPdmDWo579デフォルトの名無しさん
2019/11/21(木) 15:03:03.19ID:8WRatKwZ EUCテキストだから、ファイル名をそのままfindstrに突っ込むのは無理だな
580デフォルトの名無しさん
2019/11/21(木) 16:04:24.91ID:7xPdmDWo >>579 これでどうかな?
@echo off
chcp 20932
set s="%~1"
set "a=key = value"
set "b=[version]"
call :x > "%~2"
goto :eof
:x
for /f "delims=" %%i in ('findstr /n "^" %s%') do (
set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!
if /i !d!==!b! echo.!a!
echo.!d!
endlocal)
@echo off
chcp 20932
set s="%~1"
set "a=key = value"
set "b=[version]"
call :x > "%~2"
goto :eof
:x
for /f "delims=" %%i in ('findstr /n "^" %s%') do (
set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!
if /i !d!==!b! echo.!a!
echo.!d!
endlocal)
581デフォルトの名無しさん
2019/11/21(木) 16:15:57.27ID:7xPdmDWo >>580 を実行前は chcp 932
582デフォルトの名無しさん
2019/11/21(木) 20:46:01.60ID:8WRatKwZ EUCじゃなくてUnicode(UTF16)だった
583デフォルトの名無しさん
2019/11/21(木) 22:34:33.13ID:2C4HvUZs コード変換ソフトがないと、無理かな。
584デフォルトの名無しさん
2019/11/21(木) 22:42:46.40ID:8WRatKwZ いやfindstrにファイル名渡さないようにすればそれでいい
'type %s%^|findstr /n ^^'
cmd /u /c hoge.bat in.txt out.txt
'type %s%^|findstr /n ^^'
cmd /u /c hoge.bat in.txt out.txt
585デフォルトの名無しさん
2019/11/21(木) 22:47:11.20ID:8WRatKwZ ^^じゃダメだった
^^^^か"^"だね
^^^^か"^"だね
586デフォルトの名無しさん
2019/11/21(木) 23:14:31.55ID:t93OqxgW >>568
Ruby で作った
text = <<"EOT"
[version]
a
[version]
EOT
re = /^\[version\]$/
text.gsub!( re ) { |matched| "key = value\n#{ matched }" } # 置換
puts text
出力
key = value
[version]
a
key = value
[version]
Ruby で作った
text = <<"EOT"
[version]
a
[version]
EOT
re = /^\[version\]$/
text.gsub!( re ) { |matched| "key = value\n#{ matched }" } # 置換
puts text
出力
key = value
[version]
a
key = value
[version]
587デフォルトの名無しさん
2019/11/21(木) 23:21:01.84ID:8WRatKwZ ただBOMが付かないね
BOMが無いと使えないかどうかは怖いので試してない
BOMが無いと使えないかどうかは怖いので試してない
588デフォルトの名無しさん
2019/11/22(金) 00:14:32.18ID:UfmR8W/F >>587
@echo off & if "%~1"==":x" goto x
set "a=key = value" & set "b=[version]" & set s="%~1"
chcp 65000 > nul
cmd/u/c "set/p a=+/v8-<nul"> "%~2"
chcp 932 > nul
cmd/u/c "%~0" :x >> "%~2" & goto :eof
:x
for /f "delims=" %%i in ('type %s% ^| findstr/n/r .*') do (set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!& if /i !d!==!b! echo.!a!
echo.!d!
endlocal)
@echo off & if "%~1"==":x" goto x
set "a=key = value" & set "b=[version]" & set s="%~1"
chcp 65000 > nul
cmd/u/c "set/p a=+/v8-<nul"> "%~2"
chcp 932 > nul
cmd/u/c "%~0" :x >> "%~2" & goto :eof
:x
for /f "delims=" %%i in ('type %s% ^| findstr/n/r .*') do (set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!& if /i !d!==!b! echo.!a!
echo.!d!
endlocal)
589デフォルトの名無しさん
2019/11/22(金) 00:20:53.00ID:UfmR8W/F590デフォルトの名無しさん
2019/11/22(金) 02:00:26.84ID:iZoP+Nd2 FINDSTR: // は無視されました。
/n /rとするか、/nだけにするか
/n /rとするか、/nだけにするか
591デフォルトの名無しさん
2019/11/22(金) 02:02:44.42ID:iZoP+Nd2 /nrで良いか
592デフォルトの名無しさん
2019/11/22(金) 02:47:17.93ID:UfmR8W/F そうだな。直ぐ消えるので気付かなかった
動作はするようだが
スペース入れた方が無難だね
動作はするようだが
スペース入れた方が無難だね
593デフォルトの名無しさん
2019/11/22(金) 08:47:38.56ID:wKGQ5j7v rubyきちがいきてるね
594デフォルトの名無しさん
2019/11/22(金) 09:49:43.81ID:VuiommTl 無視無視
595デフォルトの名無しさん
2019/11/22(金) 12:09:43.22ID:f2CG40En point of no return
596デフォルトの名無しさん
2019/11/23(土) 16:13:10.37ID:x4sN5Hm0 質問した人は登場しないね
ひょっとして>>577が最後?
ひょっとして>>577が最後?
597デフォルトの名無しさん
2019/11/23(土) 16:50:58.80ID:xep2e/TT awkが手軽で楽そうだがユニコードできたっけ?
598デフォルトの名無しさん
2019/11/25(月) 13:59:48.96ID:6F6igyhI WindowsならPSで良いだろ
文字コードもドトネトで扱える範囲で指定できるし
文字コードもドトネトで扱える範囲で指定できるし
599デフォルトの名無しさん
2019/11/26(火) 10:19:19.63ID:NW9y+uW0 用途:エクセルにある複数の画像URLを、指定したフォルダにDLさせたい
コマンドでやりたい理由:
ダウンロードソフトは一つのフォルダに全部DLするか、
一つのURLを開いてから一つづつDL先を指定するか、
URLをフォルダ構造に分解して保存するからDL後探すのが面倒で嫌
DownloadThemALLとか、DL雨とか、Tab Saveとか、Image Downloader…
全部ダメ;
bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
…こんな風に並べて書いたところ、リストの最後らへんの二つぐらいを除いて
PRIORITY:NORMAL FILES:1/1 BYTES:0/0 (0%)
Transfer complete.
でDL開始する前に次の行にいってしまうようです。しかも0バイトの指定したファイルを作ってしまいますw
MS見ると複数やるなら1行に続けろとあるので
bitsadmin /transfer [name] [URL] [DL path] [name2] [URL2][DL path2]
としたが状況変わらず。
どうしたらいいでしょうか。timeoutでは変わりませんでした。
コマンドでやりたい理由:
ダウンロードソフトは一つのフォルダに全部DLするか、
一つのURLを開いてから一つづつDL先を指定するか、
URLをフォルダ構造に分解して保存するからDL後探すのが面倒で嫌
DownloadThemALLとか、DL雨とか、Tab Saveとか、Image Downloader…
全部ダメ;
bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
…こんな風に並べて書いたところ、リストの最後らへんの二つぐらいを除いて
PRIORITY:NORMAL FILES:1/1 BYTES:0/0 (0%)
Transfer complete.
でDL開始する前に次の行にいってしまうようです。しかも0バイトの指定したファイルを作ってしまいますw
MS見ると複数やるなら1行に続けろとあるので
bitsadmin /transfer [name] [URL] [DL path] [name2] [URL2][DL path2]
としたが状況変わらず。
どうしたらいいでしょうか。timeoutでは変わりませんでした。
600デフォルトの名無しさん
2019/11/26(火) 10:20:48.75ID:NW9y+uW0 >並べて書いた
batファイルにしてからダブクリのため
batファイルにしてからダブクリのため
601デフォルトの名無しさん
2019/11/26(火) 12:23:55.89ID:ImxGWCjG httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う
ダウンローダーはその辺勝手にやってくれてるんだよ
取り敢えずこれ真似してforでlist読んでやってみれば?
ttps://automationlabo.com/wat/?p=570
ダウンローダーはその辺勝手にやってくれてるんだよ
取り敢えずこれ真似してforでlist読んでやってみれば?
ttps://automationlabo.com/wat/?p=570
602デフォルトの名無しさん
2019/11/26(火) 12:32:29.83ID:NW9y+uW0 >>601
ありがとう、そこのサイトみてやってるんだ
ちなみに今はHTTPS対応してるようで
ttps://maku77.github.io/windows/cmd/download.html
ttps://qiita.com/uratatsu/items/d77152ca121d0b779464
一件づつコピペだったらできるんだ
ダウンローダーについては気軽にスレで聞いてるけど、
画像ごとにフォルダを指定して一気に保存ができるものはないみたい
昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz
ありがとう、そこのサイトみてやってるんだ
ちなみに今はHTTPS対応してるようで
ttps://maku77.github.io/windows/cmd/download.html
ttps://qiita.com/uratatsu/items/d77152ca121d0b779464
一件づつコピペだったらできるんだ
ダウンローダーについては気軽にスレで聞いてるけど、
画像ごとにフォルダを指定して一気に保存ができるものはないみたい
昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz
603デフォルトの名無しさん
2019/11/26(火) 13:46:11.40ID:ISv3uuWx しらんけど
前の行の処理が完了する前に次の物が始まるのがまずいなら
Call でいんじゃないの?
前の行の処理が完了する前に次の物が始まるのがまずいなら
Call でいんじゃないの?
604デフォルトの名無しさん
2019/11/26(火) 14:15:56.61ID:ImxGWCjG call または start "" /wait コマンド
605デフォルトの名無しさん
2019/11/26(火) 14:16:12.39ID:JyI6kWkc 特定に箇所にダウンロードして、ダウンロードが終わったら移動するんじゃダメなの?
なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう
頭硬いのかな
なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう
頭硬いのかな
606デフォルトの名無しさん
2019/11/26(火) 14:22:21.16ID:Rh/VLF1h bitsadmin の代わりに cURL を試してみては
607デフォルトの名無しさん
2019/11/26(火) 14:40:23.78ID:jwtMC5+Q >>599
ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど
ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど
608デフォルトの名無しさん
2019/11/26(火) 14:41:21.48ID:ISv3uuWx たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう
ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう
ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう
609デフォルトの名無しさん
2019/11/26(火) 14:51:14.37ID:NW9y+uW0 pushd %~dp0
for /f "tokens=1-3" %%A in (list.txt) do (
bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
)
echo
listの内容
[dir] [url] [ファイル名]
ダメでした…%%Aで留めれば行けるけど、他のフォルダにいれたいやつを上書きしちゃう
curl…Linuxコマンドだと思ってスルーしていたけど調べてみます。thx
>>605
100も200もあるURLごとのフォルダからぽちぽち移動できるもんならやればいいよ
DownloadThemALLとか、古いFirefoxでしか動かんけどScrapbookとか、あなたが
言うような奴ならごまんとある。
私はそれはやってられんから他の方法探してます。
hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg
というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、
ファイルに行くまでに何回クリックいる?×100だよやりたいならどうぞ私は嫌ですw
(単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい)
つか、あなたのそのやり方やるぐらいなら、URLのリストをいっこづつコピペで
開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん。
だってDLしたあとで探す手間いらないですよね?
for /f "tokens=1-3" %%A in (list.txt) do (
bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
)
echo
listの内容
[dir] [url] [ファイル名]
ダメでした…%%Aで留めれば行けるけど、他のフォルダにいれたいやつを上書きしちゃう
curl…Linuxコマンドだと思ってスルーしていたけど調べてみます。thx
>>605
100も200もあるURLごとのフォルダからぽちぽち移動できるもんならやればいいよ
DownloadThemALLとか、古いFirefoxでしか動かんけどScrapbookとか、あなたが
言うような奴ならごまんとある。
私はそれはやってられんから他の方法探してます。
hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg
というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、
ファイルに行くまでに何回クリックいる?×100だよやりたいならどうぞ私は嫌ですw
(単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい)
つか、あなたのそのやり方やるぐらいなら、URLのリストをいっこづつコピペで
開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん。
だってDLしたあとで探す手間いらないですよね?
610デフォルトの名無しさん
2019/11/26(火) 14:55:31.49ID:JyI6kWkc >>609
>だってDLしたあとで探す手間いらないですよね?
なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん
ダウンロードディレクトリにあるんだから
脳みそ足りて無くない?
>だってDLしたあとで探す手間いらないですよね?
なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん
ダウンロードディレクトリにあるんだから
脳みそ足りて無くない?
611デフォルトの名無しさん
2019/11/26(火) 14:59:19.90ID:NW9y+uW0 >>607
!!
調べてみます!
まあそりゃねぇ
管理ナンバー URLっていう100個のリストにある画像集める必要があって
素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら
面倒になってきまして…
ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか
ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。
で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。
599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)
!!
調べてみます!
まあそりゃねぇ
管理ナンバー URLっていう100個のリストにある画像集める必要があって
素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら
面倒になってきまして…
ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか
ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。
で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。
599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)
612デフォルトの名無しさん
2019/11/26(火) 15:05:17.28ID:NW9y+uW0 >>610
これが見えないですか。そうですか。
>hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg
>というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、
元々は
123 hogehoge.jp/moemoechan/hogenull/tio/hoge-hoge-hoge-hoget.html
124 hogehoge.jp/moemoechan/hogenull/star/hoge-hoge-hoge-hoget.html
125 hogehoge.jp/moemoechan/hogenull/maru/s/hoge-hoge-hoge-hoget.html
126 hogehoge.jp/moemoechan/hogenull/otto/s/hoge-hoge-hoge-hoget.html
というエクセルのファイルにある各URLのにある画像をそれぞれ分けたい、ということ。
ちなみにこれ4つだからぽちぽちやってもいいんだけどさ…100行あるとしたらどう?w
これが見えないですか。そうですか。
>hogehoge.jp/moemoechan/hogenull/img/image/hoge-hoge-hoge-hoget.jpg
>というURLをそのままフォルダにされても、今回の場合は探し出すのが大変なんだよ、
元々は
123 hogehoge.jp/moemoechan/hogenull/tio/hoge-hoge-hoge-hoget.html
124 hogehoge.jp/moemoechan/hogenull/star/hoge-hoge-hoge-hoget.html
125 hogehoge.jp/moemoechan/hogenull/maru/s/hoge-hoge-hoge-hoget.html
126 hogehoge.jp/moemoechan/hogenull/otto/s/hoge-hoge-hoge-hoget.html
というエクセルのファイルにある各URLのにある画像をそれぞれ分けたい、ということ。
ちなみにこれ4つだからぽちぽちやってもいいんだけどさ…100行あるとしたらどう?w
613デフォルトの名無しさん
2019/11/26(火) 15:25:21.93ID:XdTMGSyO batで外部プログラムの実行完了まで待つ呼び出し方法は
start /wait
って上で誰かが言ってるだろ
start /wait
って上で誰かが言ってるだろ
614デフォルトの名無しさん
2019/11/26(火) 15:33:34.59ID:ISv3uuWx ツリー上に保存しなけりゃいいし
ダウンロードフォルダのルートで*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ
ダウンロードフォルダのルートで*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ
615デフォルトの名無しさん
2019/11/26(火) 15:49:02.22ID:NW9y+uW0 ツリーに保存しないとダメだからそうしてるんだけど。
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。
必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする
それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw
waitはダメでした。
trancefar 〜
wait
trancefar ~
は使い方間違ってますか?
trancefar 〜複数URL
wait
もだめでした…
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。
必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする
それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw
waitはダメでした。
trancefar 〜
wait
trancefar ~
は使い方間違ってますか?
trancefar 〜複数URL
wait
もだめでした…
616デフォルトの名無しさん
2019/11/26(火) 15:54:58.38ID:SASMXjiT start "" /wait bitsadmin
でしょ
でしょ
617デフォルトの名無しさん
2019/11/26(火) 15:56:32.80ID:ISv3uuWx いちいち一個ずつ保存先指定するより楽だよ
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- 「遺体、安倍、会いたい」👈逆から読んでみて [175344491]
- 【悲報】SANA、発言撤回拒否 [769931615]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 【悲報】トランプ聖帝「高市…さん…でしたっけ?」 [878970802]
- 【悲報】タリバン、外務省のトップに土下座させる始末 [974680522]
- 山上、死刑回避し減刑か 山上母の供述で一気に酌量ムードへ [804169411]
