拡張子が .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】
レス数が1000を超えています。これ以上書き込みはできません。
2018/11/21(水) 14:52:07.84ID:v84I4o+L
2018/11/21(水) 14:53:38.55ID:v84I4o+L
スレ作った
2018/11/21(水) 15:10:24.99ID:ROx7bOng
>>1
いちおつ
ところで、最近、プロンプトの色が変わってしまったんだが直し方教えてください
くすんだ感じになってしまう
color 9f
とか明るい色が顕著
自分で加えた変更の何が影響したのかわからず、途方に暮れてます
いちおつ
ところで、最近、プロンプトの色が変わってしまったんだが直し方教えてください
くすんだ感じになってしまう
color 9f
とか明るい色が顕著
自分で加えた変更の何が影響したのかわからず、途方に暮れてます
2018/11/21(水) 15:28:50.54ID:0+i4JzOE
タヒ
2018/11/21(水) 15:34:12.06ID:0TmpON8B
>>1乙
テンプレ文だがもうWSHよりはPowershellじゃないのかしら?
テンプレ文だがもうWSHよりはPowershellじゃないのかしら?
2018/11/21(水) 15:54:50.45ID:waeO4Jak
powershellはここの板に別スレがあってここで取り扱う必用は無い
一方wshはもはや専用スレは無くこのスレに含めた形で残っている
一方wshはもはや専用スレは無くこのスレに含めた形で残っている
2018/11/21(水) 23:59:36.40ID:VxDAgoaS
>>3 自己レスです
レジストリの
HKEY_CURRENT_USER\Console にある ColorTableXX で指定された
色 00BBGGRR がソレだったので何かが変だった訳でもなく、忠実に
この値を読んでいただけでした
黒をわざわざ 0c0c0c にしていたり、全テーブル 00 から 15 まで
全て変更が入っていたので、いつの間に変更したのかという疑問が
残りますが……
レジストリの
HKEY_CURRENT_USER\Console にある ColorTableXX で指定された
色 00BBGGRR がソレだったので何かが変だった訳でもなく、忠実に
この値を読んでいただけでした
黒をわざわざ 0c0c0c にしていたり、全テーブル 00 から 15 まで
全て変更が入っていたので、いつの間に変更したのかという疑問が
残りますが……
2018/11/22(木) 05:37:11.56ID:HUZaaTR+
>REG QUERY "HKCU\Console" /f ColorTable*
HKEY_CURRENT_USER\Console
ColorTable00 REG_DWORD 0x0
ColorTable01 REG_DWORD 0x800000
ColorTable02 REG_DWORD 0x8000
ColorTable03 REG_DWORD 0x808000
ColorTable04 REG_DWORD 0x80
ColorTable05 REG_DWORD 0x800080
ColorTable06 REG_DWORD 0x8080
ColorTable07 REG_DWORD 0xc0c0c0
ColorTable08 REG_DWORD 0x808080
ColorTable09 REG_DWORD 0xff0000
ColorTable10 REG_DWORD 0xff00
ColorTable11 REG_DWORD 0xffff00
ColorTable12 REG_DWORD 0xff
ColorTable13 REG_DWORD 0xff00ff
ColorTable14 REG_DWORD 0xffff
ColorTable15 REG_DWORD 0xffffff
HKEY_CURRENT_USER\Console
ColorTable00 REG_DWORD 0x0
ColorTable01 REG_DWORD 0x800000
ColorTable02 REG_DWORD 0x8000
ColorTable03 REG_DWORD 0x808000
ColorTable04 REG_DWORD 0x80
ColorTable05 REG_DWORD 0x800080
ColorTable06 REG_DWORD 0x8080
ColorTable07 REG_DWORD 0xc0c0c0
ColorTable08 REG_DWORD 0x808080
ColorTable09 REG_DWORD 0xff0000
ColorTable10 REG_DWORD 0xff00
ColorTable11 REG_DWORD 0xffff00
ColorTable12 REG_DWORD 0xff
ColorTable13 REG_DWORD 0xff00ff
ColorTable14 REG_DWORD 0xffff
ColorTable15 REG_DWORD 0xffffff
2018/11/22(木) 06:45:17.58ID:y7NAvoby
>>6
> powershellはここの板に別スレがあってここで取り扱う必用は無い
別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な
PowerShell の話題が出たら誘導すればいいだけだし
> 一方wshはもはや専用スレは無くこのスレに含めた形で残っている
wshの専用スレがないのは需要がないからだろ
そんなものに対して使用を検討する必要なんてないと思うぞ
> powershellはここの板に別スレがあってここで取り扱う必用は無い
別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な
PowerShell の話題が出たら誘導すればいいだけだし
> 一方wshはもはや専用スレは無くこのスレに含めた形で残っている
wshの専用スレがないのは需要がないからだろ
そんなものに対して使用を検討する必要なんてないと思うぞ
2018/11/22(木) 07:28:54.55ID:Q9Jr5DcP
>>8
デフォルト値ありがとうございます
実際にOSインストールしなおしての確認はしてないのですが
Win10_1809Oct_Japanese_x64.iso の install.wim の
install.wim\3\Users\Default\NTUSER.DAT
ハイブファイルのロードをしてみると変化していた方の配色と一致してました
OSクリーンインストール後、しばらく変化に気づいていなかっただけ、
という事のようです
少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー、
だったのも加味して……
スレ汚し失礼しました
デフォルト値ありがとうございます
実際にOSインストールしなおしての確認はしてないのですが
Win10_1809Oct_Japanese_x64.iso の install.wim の
install.wim\3\Users\Default\NTUSER.DAT
ハイブファイルのロードをしてみると変化していた方の配色と一致してました
OSクリーンインストール後、しばらく変化に気づいていなかっただけ、
という事のようです
少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー、
だったのも加味して……
スレ汚し失礼しました
2018/11/22(木) 08:20:54.79ID:HUZaaTR+
俺も以前に経験あるが何で勝手に変わるのか未だに不明
デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど
デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど
2018/11/23(金) 06:41:38.84ID:Yr5PhtU+
2018/11/23(金) 07:03:12.22ID:Yr5PhtU+
dir | more でEnter押すと1行ずつ出てくるんだけど
前からこんな動作だったっけ?
dir /p みたいにページごとにスクロールしないのか?
ちなみにWin10Pro 1809 17763.107 だ
前からこんな動作だったっけ?
dir /p みたいにページごとにスクロールしないのか?
ちなみにWin10Pro 1809 17763.107 だ
2018/11/23(金) 07:31:03.82ID:Yr5PhtU+
すまんhelp見たら
<ret> 次の行を表示します。
になってた。
あとスレチだが gpg -d がエラー出る...
<ret> 次の行を表示します。
になってた。
あとスレチだが gpg -d がエラー出る...
2018/11/23(金) 13:03:06.27ID:H8vDP5fG
このスレってテンプレに「 次スレは>>970踏んだ人が立てましょう 」とかないんだね。
毎回同じ人が立ててるのかな?
毎回同じ人が立ててるのかな?
16デフォルトの名無しさん
2018/12/02(日) 11:33:28.29ID:WVaKBjKU ffmpegで動画容量を減らしています
この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか
また,バッチファイルでなくとも他に良い方法などありましたらぜひお願いします
ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4
ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4
普段はこれを実行しています
この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか
また,バッチファイルでなくとも他に良い方法などありましたらぜひお願いします
ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4
ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4
普段はこれを実行しています
2018/12/02(日) 14:26:12.73ID:uIlAasYL
シェルスクリプト・PowerShell もあるけど、
安全性のため、ダブルクリックでは動かない
ダブルクリックで動くのは、バッチファイルだけ
安全性のため、ダブルクリックでは動かない
ダブルクリックで動くのは、バッチファイルだけ
2018/12/03(月) 10:52:45.51ID:mYQmjn55
>>16
オイラはSendToにバッチファイル(のショートカットでもOK)入れて右クリックの送るから使ってる
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo
2-passは使ったことないけど、とりあえず >>16 の処理をするようになってるはず
適当なファイル名を拡張子batで保存して使ってちょ
書き込み時にインデント消えちゃうかもしれないけど、3行目の&&の前だけは先頭に空白1文字以上入れてちょ
for %%f in (%*) do (
ffmpeg -y -i "%%~ff" -b:v 500k -pass 1 -f mp4 NUL ^
&& ffmpeg -i "%%~ff" -b:v 500k -pass 2 "%%~df%%~pf%%~nf_output%%~xf"
)
pause
自動でウィンドウ閉じたければ最後のpauseはいらない
出力ファイル名は入力ファイル名_outputにしてるけど、お好みで変えればよい
複数ファイルも順番に処理するよ
オイラはSendToにバッチファイル(のショートカットでもOK)入れて右クリックの送るから使ってる
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo
2-passは使ったことないけど、とりあえず >>16 の処理をするようになってるはず
適当なファイル名を拡張子batで保存して使ってちょ
書き込み時にインデント消えちゃうかもしれないけど、3行目の&&の前だけは先頭に空白1文字以上入れてちょ
for %%f in (%*) do (
ffmpeg -y -i "%%~ff" -b:v 500k -pass 1 -f mp4 NUL ^
&& ffmpeg -i "%%~ff" -b:v 500k -pass 2 "%%~df%%~pf%%~nf_output%%~xf"
)
pause
自動でウィンドウ閉じたければ最後のpauseはいらない
出力ファイル名は入力ファイル名_outputにしてるけど、お好みで変えればよい
複数ファイルも順番に処理するよ
2018/12/04(火) 18:23:57.45ID:YV7FMG5g
typeコマンドってパイプかますと出力が変わるんだな...
以前はこんなじゃなかったような気がするが?
>type a
abc漢字def
>nkf -SjO a b
>nkf -Js b
abc漢字def
>type b
abc4A;zdef
>type b | more
abc$B4A;z(Bdef
以前はこんなじゃなかったような気がするが?
>type a
abc漢字def
>nkf -SjO a b
>nkf -Js b
abc漢字def
>type b
abc4A;zdef
>type b | more
abc$B4A;z(Bdef
2018/12/04(火) 20:16:59.52ID:Mme7W69z
"C:\hoge.exe"というプログラムを再起動したくて
taskkill /im hoge.exe /f
start C:\hoge.exe
という2行のバッチを書いたら、hoge.exeがまだ終了しきってなくて起動しませんでした。
hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので
タスクリストから居なくなったことを確認してから起動したいのですが
どう書けばよいのでしょうか?
taskkill /im hoge.exe /f
start C:\hoge.exe
という2行のバッチを書いたら、hoge.exeがまだ終了しきってなくて起動しませんでした。
hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので
タスクリストから居なくなったことを確認してから起動したいのですが
どう書けばよいのでしょうか?
2018/12/04(火) 21:09:17.31ID:YV7FMG5g
TASKLISTで確認?
2018/12/05(水) 10:02:24.61ID:miUFx5r6
>>20
こんな感じでどうだろうか?
taskkill /im hoge.exe /f
:check_run
timeout /t 1 /nobreak >nul
tasklist | find "hoge.exe" >nul && goto check_run
start C:\hoge.exe
こんな感じでどうだろうか?
taskkill /im hoge.exe /f
:check_run
timeout /t 1 /nobreak >nul
tasklist | find "hoge.exe" >nul && goto check_run
start C:\hoge.exe
2018/12/05(水) 15:06:21.73ID:B1LaPmLX
2018/12/05(水) 15:22:10.57ID:GaZgkwnu
今help見たら、まだ直ってねえ...
tasklist/?のフィルター名IMAGENAMは間違いだ...
for /f "skip=1" %%i in ('tasklist /fi "imagename eq hoge.exe"') do goto check_run
tasklist/?のフィルター名IMAGENAMは間違いだ...
for /f "skip=1" %%i in ('tasklist /fi "imagename eq hoge.exe"') do goto check_run
2018/12/05(水) 15:39:45.58ID:GaZgkwnu
あ、条件が逆w...
2018/12/05(水) 15:42:42.33ID:GaZgkwnu
逆じゃないなw ボケたなあ...
2720
2018/12/05(水) 22:04:34.15ID:82viBDdQ みなさんレスありがとうございます!
明日職場で試してみますね。
恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので
(WinXP Homeです。Win7が故障中なので…)
どうもありがとうございました!
明日職場で試してみますね。
恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので
(WinXP Homeです。Win7が故障中なので…)
どうもありがとうございました!
2018/12/05(水) 22:18:55.09ID:NGe7cQU/
XPならtimeoutも無いから
2018/12/06(木) 05:58:03.99ID:+WfW7iJP
XPってtaklistすらないんか…( ゚д゚)ポカーン
にしては↓のスレは盛況だなw
WindowsXPを使い続けるよ Part94
https://mevius.5ch.net/test/read.cgi/win/1543650955/
にしては↓のスレは盛況だなw
WindowsXPを使い続けるよ Part94
https://mevius.5ch.net/test/read.cgi/win/1543650955/
2018/12/06(木) 06:30:42.74ID:U/lGMKnD
XP Proにはあるんだが
XP HomeではPowerShellのGet-Processで代用できるらしいよ
PowerShell1.1以降らしいから、PowerShell2.0をインストールしないといけないけど
XP HomeではPowerShellのGet-Processで代用できるらしいよ
PowerShell1.1以降らしいから、PowerShell2.0をインストールしないといけないけど
2018/12/06(木) 15:26:32.29ID:iJNEICpM
Sysinternals Suite にある、pslistを始めとするコマンド群を利用すれば、
XPでも同等のことは出来る
XPでも同等のことは出来る
2018/12/06(木) 21:28:59.92ID:HLPPFLjR
XPの駆除には苦労した。
Vistaの切られぶりには辟易。
管理者って損な役回りだよなぁ…。
今は7の駆除中。
Vistaの切られぶりには辟易。
管理者って損な役回りだよなぁ…。
今は7の駆除中。
33デフォルトの名無しさん
2018/12/06(木) 23:38:01.47ID:UfR2YFj92018/12/07(金) 11:34:54.02ID:k1b27fN5
>>19
それパイプ処理してるコマンドの方の問題じゃなくて?
それパイプ処理してるコマンドの方の問題じゃなくて?
2018/12/07(金) 12:17:44.85ID:cJMcluJv
俺には何が原因か分からない
画面コンソール入力するたびに最下段にスクロールするし
スレチだけど
gpg -d で画面表示させるとエラー
gpg -h で画面表示させると文字化けまくり
cmd の表示関係が最近おかしい...
画面コンソール入力するたびに最下段にスクロールするし
スレチだけど
gpg -d で画面表示させるとエラー
gpg -h で画面表示させると文字化けまくり
cmd の表示関係が最近おかしい...
2018/12/07(金) 19:56:05.65ID:iBsL10N5
xcopyで出来ることは全てrobocopyでも出来るという認識で良いのでしょうか?
2018/12/07(金) 21:49:55.05ID:cUniS7mm
>>36
削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな。
ただ、xcopy が対話指向なのに対して robocopy はバッチ指向になってる。(言い換えればログ指向)
コマンドを置き換えれば良いというものではない。場合によってはログが五月蠅い。
ま、今時、ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな。
ただ、xcopy が対話指向なのに対して robocopy はバッチ指向になってる。(言い換えればログ指向)
コマンドを置き換えれば良いというものではない。場合によってはログが五月蠅い。
ま、今時、ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
38not 36
2018/12/07(金) 23:31:50.72ID:J47iFz0r >>37
>ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
そうだったのか、情報ありがとう
調べたらxcopyを使ったバッチファイルがあった、なおそ
>ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
そうだったのか、情報ありがとう
調べたらxcopyを使ったバッチファイルがあった、なおそ
2018/12/08(土) 20:14:50.36ID:Zhb2FJyz
xcopyはほぼフォルダ丸ごとコピー用途に使ってたから
/mirオプションで済むrobocopyの方が覚えやすくて助かるw
コピー自体も高速らしいし
/mirオプションで済むrobocopyの方が覚えやすくて助かるw
コピー自体も高速らしいし
4037
2018/12/08(土) 22:52:01.33ID:i9Z2WdJR >>38
xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ。
ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい。
対話式に目で動作を見ながらの分にはいいけど、それ以外の用途にはお勧めしないのだ。
xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ。
ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい。
対話式に目で動作を見ながらの分にはいいけど、それ以外の用途にはお勧めしないのだ。
2018/12/08(土) 23:16:46.42ID:hZepSGXS
単純コピーだったらxcopyの方がはるかに早かった気がするんだが
2018/12/08(土) 23:33:03.66ID:fChhgbp6
ネット越しだと、SSHが使えるrsyncがいいんだけど、
Windowsで使うにはcygwinが必要になるのでやや使いづらいかも
そこで、クラウドでも使えるrsyncという触れ込みのrcloneがいいかな
タイムスタンプだけが変更された時でも、実体をコピーすること無く、タイムスタンプだけを変更するなど、
それなりに賢い処理がされるようだ
もちろんローカルファイル同士でも使える
バッチによる基本的なバックアップ用途の使い方しかしていないけど、とにかく多機能でおすすめ
GoogleドライブやOneDriveなんかのクラウドへのバックアップも、バッチ処理で簡単にできる
Windowsで使うにはcygwinが必要になるのでやや使いづらいかも
そこで、クラウドでも使えるrsyncという触れ込みのrcloneがいいかな
タイムスタンプだけが変更された時でも、実体をコピーすること無く、タイムスタンプだけを変更するなど、
それなりに賢い処理がされるようだ
もちろんローカルファイル同士でも使える
バッチによる基本的なバックアップ用途の使い方しかしていないけど、とにかく多機能でおすすめ
GoogleドライブやOneDriveなんかのクラウドへのバックアップも、バッチ処理で簡単にできる
4339
2018/12/09(日) 10:35:27.52ID:lZKvlyRa2018/12/12(水) 12:03:09.26ID:wwhUpKQ/
Windows 10 19H1 で notepad が
BOM無しUTF-8がデフォルト になるそうだな...
いっそのこと コマンド プロンプトも変えてくれ
BOM無しUTF-8がデフォルト になるそうだな...
いっそのこと コマンド プロンプトも変えてくれ
45デフォルトの名無しさん
2018/12/13(木) 07:50:54.80ID:3pDLloxA バッチファイルの第一引数をファイル名にしたとして
ファイル名に&とか^が入るときどうやって処理すればいいの?
代入するとエスケープされて消えちゃうのよ。
ファイル名に&とか^が入るときどうやって処理すればいいの?
代入するとエスケープされて消えちゃうのよ。
2018/12/13(木) 09:07:24.92ID:J8CqZcRY
結局、BOM の有無を気にする開発者がいなかった。
欧米人には関係ないから
ただ、Explorer では、BOMが無いと、UTF-8・sjis の区別がつかないから、文字列で検索できなくなるから、
漏れは、Windows10・WSL・Ubuntu16.04 で、grep を使っている
欧米人には関係ないから
ただ、Explorer では、BOMが無いと、UTF-8・sjis の区別がつかないから、文字列で検索できなくなるから、
漏れは、Windows10・WSL・Ubuntu16.04 で、grep を使っている
2018/12/13(木) 09:48:12.16ID:vKHUraGB
>>45
入らないようにする
入らないようにする
2018/12/13(木) 16:46:34.51ID:H7Y/MSWd
>>45 バッチファイルに直接D&Dで起動用のバッチ
というか他の起動方法なら引数を引用符で囲むだけだし
@ECHO OFF
IF "%~1"=="1" SHIFT /1 & GOTO MAIN
SET "A=%CMDCMDLINE:"=*%"
SET "A=%A:~0,-1%"
FOR /F "tokens=2* delims=*" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E="%B%" 1
:NEXT_ARG
SET "A=" & FOR /F "tokens=*" %%I IN ("%C%") DO SET "A=%%I"
IF NOT DEFINED A %E%
IF "%A:~0,1%"=="*" (SET "D=*") ELSE SET "D= "
FOR /F "tokens=1* delims=%D%" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E=%E% "%B%" & GOTO NEXT_ARG
:MAIN
SET /A N=0
:LOOP
IF "%~0"=="" PAUSE & GOTO :EOF
ECHO ARG%N%=%0
SET /A "N+=1" & SHIFT & GOTO LOOP
というか他の起動方法なら引数を引用符で囲むだけだし
@ECHO OFF
IF "%~1"=="1" SHIFT /1 & GOTO MAIN
SET "A=%CMDCMDLINE:"=*%"
SET "A=%A:~0,-1%"
FOR /F "tokens=2* delims=*" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E="%B%" 1
:NEXT_ARG
SET "A=" & FOR /F "tokens=*" %%I IN ("%C%") DO SET "A=%%I"
IF NOT DEFINED A %E%
IF "%A:~0,1%"=="*" (SET "D=*") ELSE SET "D= "
FOR /F "tokens=1* delims=%D%" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E=%E% "%B%" & GOTO NEXT_ARG
:MAIN
SET /A N=0
:LOOP
IF "%~0"=="" PAUSE & GOTO :EOF
ECHO ARG%N%=%0
SET /A "N+=1" & SHIFT & GOTO LOOP
49デフォルトの名無しさん
2018/12/14(金) 07:43:35.08ID:0Ppktz+s ありがとうございます。
2018/12/15(土) 01:06:37.50ID:1s8Yv8lB
dir ってオプション(スイッチ)の順番で表示が異なるのを発見
CD /D C:\
dir /AH /A-D
dir /A-D /AH
CD /D C:\
dir /AH /A-D
dir /A-D /AH
2018/12/15(土) 04:41:20.49ID:s5MEHoIJ
話変わるがスペース無くてもOK
CD/D"C:\
DIR/AH/A-D
DIR/A-D/AH
CD/D"C:\
DIR/AH/A-D
DIR/A-D/AH
2018/12/15(土) 08:56:57.96ID:q+o88Lhc
その仕様のせいでパス区切り文字を/にすることができないという呪いが
53デフォルトの名無しさん
2018/12/16(日) 12:34:58.23ID:2Wn8M764 仕様がカオスになってるよね。
はやくLinuxcommandも標準対応して欲しい
はやくLinuxcommandも標準対応して欲しい
2018/12/17(月) 00:07:47.83ID:C+acxNdu
2018/12/17(月) 00:08:37.24ID:msnfpX97
>>51
そうだったのか、サンクス
そうだったのか、サンクス
2018/12/17(月) 07:58:43.76ID:xQB1O269
>>53
永久にならないから忘れろ
永久にならないから忘れろ
57デフォルトの名無しさん
2018/12/17(月) 19:54:34.22ID:zeK+PGUB >>43だけどやっぱわからん!
sendtoにバッチファイル入れといてフォルダを指定します。
指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない。
batファイル &というフォルダを右クリック送るをした時
@echo off
echo "%~f1" これは表示できる
set fname="%~f1"
echo "%fname%" &や^が消えてしまう
どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし。
sendtoにバッチファイル入れといてフォルダを指定します。
指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない。
batファイル &というフォルダを右クリック送るをした時
@echo off
echo "%~f1" これは表示できる
set fname="%~f1"
echo "%fname%" &や^が消えてしまう
どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし。
2018/12/17(月) 20:25:30.59ID:CiJxr7Yn
set "fname=%~f1"
2018/12/17(月) 20:26:56.58ID:uU80GVRL
>>57
echo %fname%
echo %fname%
2018/12/17(月) 20:28:40.66ID:uU80GVRL
あ、ごめん
どっちでもいいよ
どっちでもいいよ
2019/01/07(月) 13:47:43.45ID:ZTiiH/I2
バッチファイル中の*.*で、そんなファイルはないとエラーが出た
もう一度実行するとこれまでどおり問題なしに実行
windows更新の影響かセキュリティソフトのせいかも知れないが、
ウィルスがコマンドをすり替えている可能性もあるから、バッチ中のコマンドはパスも含めて
たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った
もう一度実行するとこれまでどおり問題なしに実行
windows更新の影響かセキュリティソフトのせいかも知れないが、
ウィルスがコマンドをすり替えている可能性もあるから、バッチ中のコマンドはパスも含めて
たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った
2019/01/07(月) 15:56:36.05ID:ZNh/EsxI
話変わるが
今は *.* としても意味無いよ * だけでOK
今は *.* としても意味無いよ * だけでOK
2019/01/07(月) 16:12:14.33ID:06gMfJVc
2019/01/07(月) 17:05:59.89ID:ZNh/EsxI
色んなソフト入れると %PATH% が膨れ上がる
使わないパスが30個とか..
気味が悪いのでバッチの先頭に
PATH C:\WINDOWS\system32;C:\WINDOWS;
と書くようにしてる
使わないパスが30個とか..
気味が悪いのでバッチの先頭に
PATH C:\WINDOWS\system32;C:\WINDOWS;
と書くようにしてる
2019/01/07(月) 20:11:25.89ID:xW7Pde1m
既に存在しないフォルダが環境変数PATHに設定されてるとコマンド検索がそこで止まってしまう
こんなのを使って時々確認するといい。
powershell $env:path -split ';'^|%{$_ ,(test-path $_ -patht cont ^)}
こんなのを使って時々確認するといい。
powershell $env:path -split ';'^|%{$_ ,(test-path $_ -patht cont ^)}
66デフォルトの名無しさん
2019/01/11(金) 19:37:34.13ID:WNI2j4XF 遅延環境変数OFFでやると面倒だ
ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る
ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る
2019/01/12(土) 00:39:03.28ID:IAz54C40
PowerShell で、$env:path -split ';' と打つと、
C:\WINDOWS\system32
C:\WINDOWS
Intel を除いて、これらが先頭に来る
C:\WINDOWS\system32
C:\WINDOWS
Intel を除いて、これらが先頭に来る
2019/01/12(土) 07:44:55.84ID:uK0WXiBn
>>67
普通はね
普通はね
2019/01/14(月) 09:23:20.28ID:e5YcHVOA
@echo off & set "p=%path%"
:v
for /f "delims=; tokens=1*" %%i in ("%p%") do set "p=%%j" & echo "%%i"
if defined p goto :v
おらの環境
"C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
"C:\ProgramData\Oracle\Java\javapath"
"C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common"
"C:\Program Files (x86)\Intel\iCLS Client\"
"C:\Program Files\Intel\iCLS Client\"
"C:\WINDOWS\system32"
"C:\WINDOWS"
:v
for /f "delims=; tokens=1*" %%i in ("%p%") do set "p=%%j" & echo "%%i"
if defined p goto :v
おらの環境
"C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
"C:\ProgramData\Oracle\Java\javapath"
"C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common"
"C:\Program Files (x86)\Intel\iCLS Client\"
"C:\Program Files\Intel\iCLS Client\"
"C:\WINDOWS\system32"
"C:\WINDOWS"
2019/01/14(月) 09:53:16.85ID:e5YcHVOA
マイクロソフトがどこまでチェックしているか知らんが
コマンド追加したら干渉する可能性はあるな
コマンド追加したら干渉する可能性はあるな
2019/01/20(日) 00:11:28.57ID:xs+avKSw
C:\HOGE
├─aaa
│ ├─old
│ │ aaa1.bat
│ │
│ └─src
│ aaa1.bat
│
├─bbb
│ ├─old
│ │ bbb1.bat
│ │
│ └─src
│ bbb1.bat
│
└─ccc
├─old
│ ccc1.bat
│
└─src
ccc1.bat
↑のoldフォルダとその中身を一括で削除したいのですが、コマンドでは難しいでしょうか?
├─aaa
│ ├─old
│ │ aaa1.bat
│ │
│ └─src
│ aaa1.bat
│
├─bbb
│ ├─old
│ │ bbb1.bat
│ │
│ └─src
│ bbb1.bat
│
└─ccc
├─old
│ ccc1.bat
│
└─src
ccc1.bat
↑のoldフォルダとその中身を一括で削除したいのですが、コマンドでは難しいでしょうか?
2019/01/20(日) 00:13:41.92ID:xs+avKSw
↑HOGEの下には実際にはaaa〜cccのようなフォルダが無数にあります…
2019/01/20(日) 00:15:44.50ID:xs+avKSw
↑たびたびすみません。
正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です。
正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です。
2019/01/20(日) 02:15:14.20ID:pk2ilGy6
for /d /r
とif文つかえばいいだけじゃん
とif文つかえばいいだけじゃん
2019/01/20(日) 04:39:06.95ID:K0yQSeRR
del
2019/01/20(日) 07:09:39.32ID:YWDkxQqJ
FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2> nul
2019/01/20(日) 07:32:36.37ID:YWDkxQqJ
バッチにするまでもない
直接入力なら%%を%に
直接入力なら%%を%に
2019/01/20(日) 09:22:02.93ID:pk2ilGy6
2019/01/20(日) 10:27:11.29ID:pk2ilGy6
おいらならこう書く
for /d /r c:\hoge %a in (old) rd /q /s %a
for /d /r c:\hoge %a in (old) rd /q /s %a
2019/01/20(日) 10:28:21.11ID:xs+avKSw
2019/01/20(日) 10:36:33.72ID:xs+avKSw
でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か…
2019/01/20(日) 10:54:52.71ID:YWDkxQqJ
2019/01/20(日) 11:08:28.37ID:pk2ilGy6
2019/01/20(日) 11:18:39.20ID:YWDkxQqJ
そうかな?
RD の前に echo 付けて見たら?
ファイルでも RD OLD がでるぞ
FOR のヘルプをよく見てね
RD の前に echo 付けて見たら?
ファイルでも RD OLD がでるぞ
FOR のヘルプをよく見てね
2019/01/21(月) 21:18:15.33ID:9WBiq3dN
ざっくり言うと、
EternalForceBlizzard.bat C:\hoge
とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ…かな。
>>82
どうでもいいけど全部大文字とかやめれ。
内容は知らんが死ぬほどダサい。
EternalForceBlizzard.bat C:\hoge
とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ…かな。
>>82
どうでもいいけど全部大文字とかやめれ。
内容は知らんが死ぬほどダサい。
2019/01/21(月) 21:58:45.27ID:rFmuVz+a
今後は小文字にするよ。気が変わるかもしれんが。
forの括弧内のファイルは存在しなくてもスキップしない
例外はワイルドカードで対象はファイル
/dだと対象はフォルダ
ただそれだけの話だ
forの括弧内のファイルは存在しなくてもスキップしない
例外はワイルドカードで対象はファイル
/dだと対象はフォルダ
ただそれだけの話だ
2019/01/22(火) 11:52:34.58ID:dXptnPwJ
findstrの結果に文字列を連結したいのですがうまくいきません
どうしたらよういでしょういか?
cd /d %~dp0
type test1.txt | echo"りんご" & findstr "りんご" >> out.txt
どうしたらよういでしょういか?
cd /d %~dp0
type test1.txt | echo"りんご" & findstr "りんご" >> out.txt
2019/01/22(火) 14:00:46.60ID:CTNOEPFx
call :a "りんご" test1.txt > out.txt & goto :eof
:a
echo %1 & findstr %1 %2
:a
echo %1 & findstr %1 %2
2019/01/22(火) 15:31:22.37ID:dXptnPwJ
>88
ありがとうございます。
[りんご]
[りんごを含んだ文]
[りんごを含んだ文]
[りんごを含んだ文]
といった感じにでました。
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
という感じはならないでしょうか?
ありがとうございます。
[りんご]
[りんごを含んだ文]
[りんごを含んだ文]
[りんごを含んだ文]
といった感じにでました。
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
という感じはならないでしょうか?
2019/01/22(火) 15:58:11.82ID:CTNOEPFx
call :a "りんご" test1.txt > out.txt & goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
2019/01/22(火) 16:44:03.03ID:dXptnPwJ
>90
おお!、うまくいきました。ありがとうございます!。
エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです。
おお!、うまくいきました。ありがとうございます!。
エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです。
2019/01/22(火) 17:08:05.17ID:nMQEwTi4
単に行数を少なくするだけの&の使い方で
デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい
デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい
2019/01/22(火) 17:31:44.20ID:CTNOEPFx
そういうのは質問者の方で調整よろしくお願いします
2019/01/22(火) 18:02:51.94ID:nMQEwTi4
2019/01/22(火) 18:15:04.06ID:CTNOEPFx
言いたい事は分かります。
はっきり言って自分用のバッチはこんな書き方はしません。
行数を抑える為に繋いでるだけなんで。
バランス見て改行します。すみません。
はっきり言って自分用のバッチはこんな書き方はしません。
行数を抑える為に繋いでるだけなんで。
バランス見て改行します。すみません。
2019/01/22(火) 18:27:13.64ID:nMQEwTi4
って思ったら、質問者は&に感心してたわけじゃなくて
逆に&で簡単に書けない点が不満なんだな
逆に&で簡単に書けない点が不満なんだな
2019/01/22(火) 19:15:10.41ID:ak2Ch+AT
Basic言語では&は文字列結合演算子だが
バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる
文字列結合演算子自体が存在しない
バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる
文字列結合演算子自体が存在しない
2019/01/23(水) 13:46:03.43ID:HgbeZ9kI
昨日の質問者です、たびたびすみません
複数ワードを処理しようとして
call :a "りんご" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
call :a "みかん" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
としたところ、うまくいったのですが
これが5項目くらいになると
dos窓に「別のプロセスが使用中です」と表示されてしまいます。
なにかメモリ的なものがいっぱいになるのでしょうか?
回避方法はありますでしょうか?
複数ワードを処理しようとして
call :a "りんご" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
call :a "みかん" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
としたところ、うまくいったのですが
これが5項目くらいになると
dos窓に「別のプロセスが使用中です」と表示されてしまいます。
なにかメモリ的なものがいっぱいになるのでしょうか?
回避方法はありますでしょうか?
2019/01/23(水) 15:17:41.73ID:HwNiCy+r
意味不明だが?
@echo off
call :a "りんご" test1.txt > out.txt
call :a "みかん" test1.txt >> out.txt
goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
@echo off
call :a "りんご" test1.txt > out.txt
call :a "みかん" test1.txt >> out.txt
goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
100デフォルトの名無しさん
2019/01/23(水) 15:33:11.44ID:HwNiCy+r 今時、メモリ不足とか滅多に無いよ。
バッチで80byte文字列の一万個の配列変数とかやったことあるけど
問題なかったよ。
バッチで80byte文字列の一万個の配列変数とかやったことあるけど
問題なかったよ。
101デフォルトの名無しさん
2019/01/23(水) 16:10:02.06ID:HgbeZ9kI >99さんの書式にするとうまくいきました
おそらく私が
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
をいっぱい書いてしまったからかもしれません。
おそらく私が
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
をいっぱい書いてしまったからかもしれません。
102デフォルトの名無しさん
2019/01/24(木) 07:52:40.56ID:ElV7iNpQ 文字列:形式の「ラベル」はバッチファイル内でユニークにしてください。
今回のa:は共通サブルーチンなので、バッチ内で1つで良く、コードの最後に置きましょう。
サブルーチンを使う場合、メインルーチンのラストにはgoto :eof
を書くようにしてください。これが無いとメインが終わった後にまたサブルーチン処理が行われます。
今回のa:は共通サブルーチンなので、バッチ内で1つで良く、コードの最後に置きましょう。
サブルーチンを使う場合、メインルーチンのラストにはgoto :eof
を書くようにしてください。これが無いとメインが終わった後にまたサブルーチン処理が行われます。
103デフォルトの名無しさん
2019/01/24(木) 07:58:36.47ID:ElV7iNpQ またバッチ内で複数のサブルーチンを使いたい場合はそれぞれのサブルーチンの後にexit /bのコマンド行を付けてください。
exit /bによってメインルーチンに処理が戻ります。
これ無いと下の行に処理が遷移してしまいます
exit /bによってメインルーチンに処理が戻ります。
これ無いと下の行に処理が遷移してしまいます
104デフォルトの名無しさん
2019/01/24(木) 10:48:11.21ID:4/xiY5nl なるほど、丁寧な説明ありがとうございます。
105デフォルトの名無しさん
2019/01/24(木) 11:16:25.14ID:tFfJW+eT cmdの基礎を勉強しろ
あまりにも質問のレベルが低いとレスがつかないと思え
あまりにも質問のレベルが低いとレスがつかないと思え
106デフォルトの名無しさん
2019/02/16(土) 02:44:12.08ID:Aqg/y48e for %%I in (*.txt) do (
echo #%%I
)
*.txt だけでなく *.txt2 などもあれば表示する
.txt などの拡張子が3文字の時だけ4文字目以降を無視する
拡張子が2文字の時は問題なし
バグか仕様か
echo #%%I
)
*.txt だけでなく *.txt2 などもあれば表示する
.txt などの拡張子が3文字の時だけ4文字目以降を無視する
拡張子が2文字の時は問題なし
バグか仕様か
107デフォルトの名無しさん
2019/02/16(土) 14:24:30.26ID:dbRt9asv dir もね
他にもMS-DOS用の短い名前に反応したり
ワイルドカードは、いやらしい動作をするね
他にもMS-DOS用の短い名前に反応したり
ワイルドカードは、いやらしい動作をするね
108デフォルトの名無しさん
2019/02/16(土) 15:05:34.51ID:H4+bjsi1 dir c:\*1
でProgram Filesが表示されるやつか
でProgram Filesが表示されるやつか
109デフォルトの名無しさん
2019/02/16(土) 15:23:46.61ID:dbRt9asv del *~*
は危険
は危険
110デフォルトの名無しさん
2019/02/16(土) 18:22:32.57ID:VRMsBAkU 8.3形式でもファイル見てるのね
111デフォルトの名無しさん
2019/02/16(土) 21:48:09.10ID:6/sri1HY112デフォルトの名無しさん
2019/02/17(日) 08:58:17.36ID:2q4tHixb *.txt2 のファイル名を dir/x で見ると
*~1.TXT とか *~2.TXT になってるから
dir *.txt
dir *txt
dir *xt
dir *t
で一致するということね
*~1.TXT とか *~2.TXT になってるから
dir *.txt
dir *txt
dir *xt
dir *t
で一致するということね
113デフォルトの名無しさん
2019/02/17(日) 10:18:01.03ID:vf3NvI2M やっても良いPCなら OS インストール直後に
>fsutil 8dot3name set
で set 1 をして 8.3名作成を無効化するけど
>fsutil 8dot3name strip
を実際にはしたことがない俺チキン
>fsutil 8dot3name set
で set 1 をして 8.3名作成を無効化するけど
>fsutil 8dot3name strip
を実際にはしたことがない俺チキン
114デフォルトの名無しさん
2019/02/17(日) 18:32:35.83ID:2q4tHixb これでOK
for %%i in (*.txt) do if /i "%%~xi"==".txt" echo %%i
for %%i in (*.txt) do if /i "%%~xi"==".txt" echo %%i
115デフォルトの名無しさん
2019/02/18(月) 23:00:03.97ID:xTG5esR6 以下のように「C:\hoge」の下の全ファイルのファイル名(拡張子は除く)を
"aaa"に書き換えたいのですが、どのようなコマンドを書けば良いのでしょうか?
■書き換え前
C:\hoge
│ あああ.txt
│ いいい.xlsx
│
├─hage
│ ううう.xml
│ えええ.docx
│
└─hige
おおお.jpeg
かかか.gif
■書き換え後
C:\hoge
│ aaa.txt
│ aaa.xlsx
│
├─hage
│ aaa.xml
│ aaa.docx
│
└─hige
aaa.jpeg
aaa.gif
"aaa"に書き換えたいのですが、どのようなコマンドを書けば良いのでしょうか?
■書き換え前
C:\hoge
│ あああ.txt
│ いいい.xlsx
│
├─hage
│ ううう.xml
│ えええ.docx
│
└─hige
おおお.jpeg
かかか.gif
■書き換え後
C:\hoge
│ aaa.txt
│ aaa.xlsx
│
├─hage
│ aaa.xml
│ aaa.docx
│
└─hige
aaa.jpeg
aaa.gif
116デフォルトの名無しさん
2019/02/18(月) 23:02:17.45ID:xTG5esR6 すみません、higeの下のファイル名がずれてしまいました。
正しくは↓です。
■書き換え前
└─hige
おおお.jpeg
かかか.gif
■書き換え後
└─hige
aaa.jpeg
aaa.gif
正しくは↓です。
■書き換え前
└─hige
おおお.jpeg
かかか.gif
■書き換え後
└─hige
aaa.jpeg
aaa.gif
117デフォルトの名無しさん
2019/02/18(月) 23:05:19.42ID:xTG5esR6 それと、同一フォルダ内に同じ拡張子のファイルは複数存在しません。
118デフォルトの名無しさん
2019/02/18(月) 23:08:58.74ID:rXc7x2eo for文とmv組み合わせでしょ
サイト2個検索した方が聞くよりはやくできるとおもうけど
なんで質問したの?
サイト2個検索した方が聞くよりはやくできるとおもうけど
なんで質問したの?
119デフォルトの名無しさん
2019/02/19(火) 06:30:48.56ID:Hb9ZoB2m >>115
for /r "c:\hoge" %%i in (*) do ren "%%~fi" "aaa%%~xi"
for /r "c:\hoge" %%i in (*) do ren "%%~fi" "aaa%%~xi"
120デフォルトの名無しさん
2019/02/19(火) 09:50:06.91ID:Hb9ZoB2m 話変わるが
for に /r を付けたら
%~nxi の引用符が何故かとれない
>for %i in ("abc") do @echo %~nxi
abc
>for /r %i in ("abc") do @echo %~nxi
"abc"
>for /r %i in ("abc*") do @echo %~nxi
abc
for に /r を付けたら
%~nxi の引用符が何故かとれない
>for %i in ("abc") do @echo %~nxi
abc
>for /r %i in ("abc") do @echo %~nxi
"abc"
>for /r %i in ("abc*") do @echo %~nxi
abc
121デフォルトの名無しさん
2019/02/19(火) 10:03:42.75ID:/Qrw8ZSg 管理者として実行したいアプリ、さらに優先度を低で起動させる方法ありますか?
さらにそれをスタートアップに登録したいんです
さらにそれをスタートアップに登録したいんです
122デフォルトの名無しさん
2019/02/19(火) 10:09:52.10ID:e0NdV1CM タスクに登録すれば?
123デフォルトの名無しさん
2019/02/19(火) 10:57:12.10ID:Hb9ZoB2m start /LOW のコマンドのショートカットを
スタートアップのフォルダに入れりゃいいんじゃね
ショートカットの設定は管理者にして
スタートアップのフォルダに入れりゃいいんじゃね
ショートカットの設定は管理者にして
124117
2019/02/19(火) 20:46:10.94ID:kZ82VOHH125デフォルトの名無しさん
2019/02/20(水) 00:04:58.50ID:GzdyKGwx 聞いたほうが早いならそれでもいいと思うよ。
126デフォルトの名無しさん
2019/02/20(水) 08:00:48.35ID:vs0GH/UB AzureAD、Office365を使うなら(Office365についてはGraphの使いこなしも必須)。バッチやVBSの代替としても必須。
「Powershellが出来る」だけではなくPowershellも活用し、なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素
「Powershellが出来る」だけではなくPowershellも活用し、なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素
127デフォルトの名無しさん
2019/02/20(水) 08:01:45.93ID:vs0GH/UB すみません
>>126は誤爆
>>126は誤爆
128デフォルトの名無しさん
2019/02/21(木) 18:42:23.51ID:WAQ7+H44 環境変数の中に=があると
変数参照が変な事になってくるな...
>set a=b=c
>echo %a%
b=c
>echo %a=b%
c
変数参照が変な事になってくるな...
>set a=b=c
>echo %a%
b=c
>echo %a=b%
c
129デフォルトの名無しさん
2019/02/21(木) 19:45:58.39ID:bhin4IwL イコールは^つけないと特殊な動作するはず
130デフォルトの名無しさん
2019/02/21(木) 20:25:05.21ID:WAQ7+H44 俺も最初はそう思ったんだけど...
>set a=b^=c
>echo %a=b%
c
>set a=b^=c
>echo %a=b%
c
131デフォルトの名無しさん
2019/02/21(木) 21:37:53.86ID:m0MzDbdd ならないんだけど?(win7)
BATだと
ECHO は <ON> です。
ダイレクトだと
%a=b%
BATだと
ECHO は <ON> です。
ダイレクトだと
%a=b%
132デフォルトの名無しさん
2019/02/21(木) 21:41:55.31ID:oU3vU03f 自分の環境でもならない
win10
win10
133デフォルトの名無しさん
2019/02/21(木) 22:19:20.44ID:WAQ7+H44 バッチでやって見た
set a=b^=c
echo %a%
echo %a=b%
結果
b=c
c
set "a=b=c" でも同じ
Microsoft Windows 10 Pro
10.0.17763 N/A ビルド 17763
>set a
a=b=c
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\ore\AppData\Roaming
set a=b^=c
echo %a%
echo %a=b%
結果
b=c
c
set "a=b=c" でも同じ
Microsoft Windows 10 Pro
10.0.17763 N/A ビルド 17763
>set a
a=b=c
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\ore\AppData\Roaming
134デフォルトの名無しさん
2019/02/21(木) 23:16:08.70ID:WAQ7+H44135デフォルトの名無しさん
2019/03/01(金) 16:41:47.85ID:7J1MA7z+ 1.batファイルで
start ***.bat
を実行してその***.batの中に
call ***.exe
があるんだけど
最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?
start ***.bat
を実行してその***.batの中に
call ***.exe
があるんだけど
最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?
136デフォルトの名無しさん
2019/03/01(金) 16:56:22.92ID:1DJZnnpK start "" /min "hoge.exe"
137デフォルトの名無しさん
2019/03/12(火) 10:13:24.40ID:2ZxzO4Nc forで行取得して並列で処理してるんですが、一度にすべて実行するのでPCの負担が大きいです。
さらに回数指定するには、どうすればできますか?
さらに回数指定するには、どうすればできますか?
138137
2019/03/12(火) 11:09:28.51ID:2ZxzO4Nc すみません。説明不足でした。
初めにforでテキストを取得しsetに割り当て、全てをコマンドとして生成して並列処理しています。
並列で3回ずつ実行し終了をループしたいです。
初めにforでテキストを取得しsetに割り当て、全てをコマンドとして生成して並列処理しています。
並列で3回ずつ実行し終了をループしたいです。
139デフォルトの名無しさん
2019/03/12(火) 13:04:35.48ID:6sZCRvoD batを見ないと良く分からん
140デフォルトの名無しさん
2019/03/12(火) 14:22:43.31ID:JT0qCUVC FORでサブルーチンをCALLするようにして、
3回呼び出されたら実行するようにするとかかな
これ以上は元のバッチを見ないと何とも
3回呼び出されたら実行するようにするとかかな
これ以上は元のバッチを見ないと何とも
141デフォルトの名無しさん
2019/03/12(火) 14:35:25.41ID:ollYoz5v 並列処理ということは、非同期呼び出しを使ってるわけだから
その呼び出した処理の終了をどうやって感知するかが肝
多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う
その呼び出した処理の終了をどうやって感知するかが肝
多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う
142デフォルトの名無しさん
2019/03/12(火) 20:57:10.17ID:kFHhQjU8 んでもそんな高度な事がしたいならVCあたりで作っちゃいかんの?
143デフォルトの名無しさん
2019/03/14(木) 00:11:57.06ID:MfJOghkN -- A.bat --
:loop
if "%~1" == "" goto end
call B.bat "%~1"
shift
goto loop
:end
-- B.bat --
--
if exist "%~dpn1_hoge.txt" (
set XXX=--option "%~dpn1_hoge.txt"
)
--
A.batに複数ファイルをD&DしたときにB.batのif existで指定したファイルがA.batに入力したファイルに1つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます
これを回避するにはどうすればいいでしょうか?
:loop
if "%~1" == "" goto end
call B.bat "%~1"
shift
goto loop
:end
-- B.bat --
--
if exist "%~dpn1_hoge.txt" (
set XXX=--option "%~dpn1_hoge.txt"
)
--
A.batに複数ファイルをD&DしたときにB.batのif existで指定したファイルがA.batに入力したファイルに1つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます
これを回避するにはどうすればいいでしょうか?
144デフォルトの名無しさん
2019/03/14(木) 00:20:05.87ID:Gms0hgp4 毎回リセットしとけば?
b.batの先頭でset xxx=を書くとかb.batをsetlocal〜endlocalするとか
b.batの先頭でset xxx=を書くとかb.batをsetlocal〜endlocalするとか
145デフォルトの名無しさん
2019/03/14(木) 00:26:03.45ID:Gms0hgp4 すまん良く読んでなかった
ファイルね
b.batで生成するのかな?
削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?
ファイルね
b.batで生成するのかな?
削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?
146デフォルトの名無しさん
2019/03/14(木) 00:37:26.49ID:MfJOghkN B.batは動画のエンコードに使っているバッチファイルの中身の一部で %~dpn1_hoge.txt があった場合はツールに追加のオプションを指定するようにしている感じです
147デフォルトの名無しさん
2019/03/19(火) 11:54:10.54ID:hD2ftWP/ set day=3/19(火)
if 1==1 (
echo %day%
)
すみませんどなたか教えてください。
曜日の半角括弧のせいでif文が閉じられてしまうんだけど
どうやってエスケープすればいいんでしょうか?
if 1==1 (
echo %day%
)
すみませんどなたか教えてください。
曜日の半角括弧のせいでif文が閉じられてしまうんだけど
どうやってエスケープすればいいんでしょうか?
148デフォルトの名無しさん
2019/03/19(火) 12:02:29.16ID:9bBZVsPM ^)
バッチ エスケープで検索すりゃすぐわかるだろ
バッチ エスケープで検索すりゃすぐわかるだろ
149デフォルトの名無しさん
2019/03/19(火) 12:50:21.44ID:Juttg7oZ 括弧はpsのワンライナーでも嵌まる箇所
150デフォルトの名無しさん
2019/03/19(火) 12:57:54.34ID:dDtGuicR >>147
こういう方法もある
変数dayの中に、二重引用符がなければ
set day=3/19(火)
if 1==1 (
for /f delims^=^ eol^= %%i in ("%day%") do echo %%i
)
これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫
こういう方法もある
変数dayの中に、二重引用符がなければ
set day=3/19(火)
if 1==1 (
for /f delims^=^ eol^= %%i in ("%day%") do echo %%i
)
これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫
151デフォルトの名無しさん
2019/03/19(火) 13:01:36.48ID:dDtGuicR echo.%%i
にしたらもっといいかも
にしたらもっといいかも
152147
2019/03/19(火) 13:11:02.99ID:hD2ftWP/153デフォルトの名無しさん
2019/03/19(火) 13:19:49.65ID:dDtGuicR 最後の % は要らんぞ
154デフォルトの名無しさん
2019/03/19(火) 20:28:12.65ID:xvBmkr0d >>147
echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある。
これだとほとんどすべての記号がそのまま出力される。例外として「!」は「^!」で、「%」は「%%」で、「^」「^^」などは要エスケープ。
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set "day=3/19(火)"
if 1==1 (
echo !day!
)
echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある。
これだとほとんどすべての記号がそのまま出力される。例外として「!」は「^!」で、「%」は「%%」で、「^」「^^」などは要エスケープ。
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set "day=3/19(火)"
if 1==1 (
echo !day!
)
155デフォルトの名無しさん
2019/03/19(火) 22:00:01.63ID:dDtGuicR ! とか ^ があると
setlocalの前に変数代入した方が楽だな
setlocalの前に変数代入した方が楽だな
156デフォルトの名無しさん
2019/03/20(水) 22:34:42.36ID:/eguYGP5 一番厄介なのって [ ] だっけ?
157デフォルトの名無しさん
2019/03/21(木) 01:32:50.66ID:3Vd/nBOR 個人的には全角スペースと()
158デフォルトの名無しさん
2019/03/21(木) 21:56:31.90ID:HPyHK69o day=off だと echo されない
159デフォルトの名無しさん
2019/03/21(木) 23:03:18.28ID:HPyHK69o 遅延モードでのエスケープの動作が面白い
setlocal enabledelayedexpansion
set "a=^x ^^ ^!"
set "b=^x ^^ ^y"
set "c=^x ^^ ^y" !
echo a=!a!
echo b=!b!
echo c=!c!
a=x ^ !
b=^x ^^ ^y
c=x ^ y
setlocal enabledelayedexpansion
set "a=^x ^^ ^!"
set "b=^x ^^ ^y"
set "c=^x ^^ ^y" !
echo a=!a!
echo b=!b!
echo c=!c!
a=x ^ !
b=^x ^^ ^y
c=x ^ y
160デフォルトの名無しさん
2019/04/10(水) 22:17:03.83ID:dRPi9Fbo コマンドプロンプトで以下のpowershellコマンドを実行すると曜日が英語で表示されるのですが、
ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか?
曜日の判定に使いたいのです。
C:\>powershell "(get-date).DayOfWeek"
Wednesday
ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか?
曜日の判定に使いたいのです。
C:\>powershell "(get-date).DayOfWeek"
Wednesday
161デフォルトの名無しさん
2019/04/10(水) 22:22:48.75ID:kh6Z72O0 >>160
for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"') do set "hoge=%%i"
for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"') do set "hoge=%%i"
162デフォルトの名無しさん
2019/04/10(水) 23:46:13.28ID:dRPi9Fbo163デフォルトの名無しさん
2019/04/17(水) 14:41:43.82ID:SVkPhkuc 読み取り専用属性付加と解除についてお願いします
ATTRIB +R hoge.txt
この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが
ATTRIB +R *.txt
とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます
バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?
ATTRIB +R hoge.txt
この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが
ATTRIB +R *.txt
とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます
バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?
164デフォルトの名無しさん
2019/04/17(水) 15:11:44.94ID:SVkPhkuc165デフォルトの名無しさん
2019/04/17(水) 15:30:16.10ID:Tk94P2Iw >>163
"*.txt "が邪魔
"*.txt "が邪魔
166デフォルトの名無しさん
2019/04/17(水) 15:59:23.64ID:SVkPhkuc167デフォルトの名無しさん
2019/04/17(水) 16:34:46.90ID:HAjihGMm168デフォルトの名無しさん
2019/04/17(水) 17:06:43.84ID:SVkPhkuc169デフォルトの名無しさん
2019/04/17(水) 17:54:55.66ID:DeBFB2/b ATTRIB +R %*
とすると複数ファイル可
とすると複数ファイル可
170デフォルトの名無しさん
2019/04/17(水) 18:03:53.01ID:mAjziF7r バッチファイルの図形プログラミング作ったら広告収入入ると思いますか?
171デフォルトの名無しさん
2019/04/17(水) 18:18:21.55ID:QABBLuNd172デフォルトの名無しさん
2019/04/17(水) 19:24:10.99ID:SVkPhkuc173デフォルトの名無しさん
2019/04/17(水) 21:07:05.52ID:3cAVwUGz 複数ファイルドロップするなら shift でループが簡単だと思うけど何か落とし穴ある?
174デフォルトの名無しさん
2019/04/18(木) 19:59:48.99ID:pUSpmyse ファイルドロップで落とし穴があるとしたら >>45 みたいな引数の時
>>48 を参考にすると
@echo off
set "a=%cmdcmdline:"=*%"
set "a=%a:~0,-1%" & set "e="
set "c=" & for /f "tokens=2* delims=*" %%i in ("%a%") do set "c=%%j"
:x
set "a=" & for /f "tokens=*" %%i in ("%c%") do set "a=%%i"
if "%a:~0,1%"=="*" (set "d=*") else set "d= "
set "b=" & set "c="
for /f "tokens=1* delims=%d%" %%i in ("%a%") do set "b=%%i" & set "c=%%j"
if defined b set e=%e% "%b%" & goto x
for %%i in (%e%) do attrib +r %%i
でもこれファイルドロップでしか使えない
>>48 を参考にすると
@echo off
set "a=%cmdcmdline:"=*%"
set "a=%a:~0,-1%" & set "e="
set "c=" & for /f "tokens=2* delims=*" %%i in ("%a%") do set "c=%%j"
:x
set "a=" & for /f "tokens=*" %%i in ("%c%") do set "a=%%i"
if "%a:~0,1%"=="*" (set "d=*") else set "d= "
set "b=" & set "c="
for /f "tokens=1* delims=%d%" %%i in ("%a%") do set "b=%%i" & set "c=%%j"
if defined b set e=%e% "%b%" & goto x
for %%i in (%e%) do attrib +r %%i
でもこれファイルドロップでしか使えない
175デフォルトの名無しさん
2019/04/19(金) 16:41:41.89ID:nzBF9sby batのコマンドのタイトルバーに
「管理者: 」
の表示を消すこと出来ないのでしょうか?
「管理者: 」
の表示を消すこと出来ないのでしょうか?
176デフォルトの名無しさん
2019/04/19(金) 17:41:11.03ID:HG96JCXu muiファイルいじるしかなかったような
177デフォルトの名無しさん
2019/04/19(金) 18:58:50.77ID:FmrBk+Vp スレチと怒られそうだが
--- change_wnd_title.uws ------
DEF_DLL SetWindowTextA(HWND, STRING):BOOL:user32.DLL
DIM old_title = PARAM_STR[0]
DIM new_title = PARAM_STR[1]
DIM idwnd = GETID(old_title)
IFB -1<idwnd THEN
SetWindowTextA(IDTOHND(idwnd), new_title)
ENDIF
---------
C:\UWSC\UWSC.exe C:\TEST\change_wnd_title.uws "管理者: test" "ABC"
を管理者権限で実行
「管理者:」 と「test」 の間にスペースが2つある点に注意
べつにWin32apiが使えればほかのスクリプトでもいいが
すでに配布が終了している(?)UWSCをすすめるのは
とてもにコンパクトで気軽に試しやすいため
以下のレスにあるDL先は公式リンク
使うのはFree版でよい
http://egg.2ch.net/test/read.cgi/software/1533818531/3
--- change_wnd_title.uws ------
DEF_DLL SetWindowTextA(HWND, STRING):BOOL:user32.DLL
DIM old_title = PARAM_STR[0]
DIM new_title = PARAM_STR[1]
DIM idwnd = GETID(old_title)
IFB -1<idwnd THEN
SetWindowTextA(IDTOHND(idwnd), new_title)
ENDIF
---------
C:\UWSC\UWSC.exe C:\TEST\change_wnd_title.uws "管理者: test" "ABC"
を管理者権限で実行
「管理者:」 と「test」 の間にスペースが2つある点に注意
べつにWin32apiが使えればほかのスクリプトでもいいが
すでに配布が終了している(?)UWSCをすすめるのは
とてもにコンパクトで気軽に試しやすいため
以下のレスにあるDL先は公式リンク
使うのはFree版でよい
http://egg.2ch.net/test/read.cgi/software/1533818531/3
178デフォルトの名無しさん
2019/04/19(金) 21:14:57.50ID:5yrPogsy >>175
例えば d:\hoge\a.bat を実行するなら
ショートカットの新規作成でコマンドは
cmd /c start "ABC" /d "d:\hoge" a.bat
ショートカットのプロパティで
実行時の大きさは「最小化」
詳細設定で「管理者として実行」
このショートカットを実行すると
a.bat が管理者として実行されて
タイトルは ABC のみになる
例えば d:\hoge\a.bat を実行するなら
ショートカットの新規作成でコマンドは
cmd /c start "ABC" /d "d:\hoge" a.bat
ショートカットのプロパティで
実行時の大きさは「最小化」
詳細設定で「管理者として実行」
このショートカットを実行すると
a.bat が管理者として実行されて
タイトルは ABC のみになる
179デフォルトの名無しさん
2019/04/19(金) 21:49:09.78ID:5yrPogsy180デフォルトの名無しさん
2019/04/19(金) 23:47:56.76ID:UTkV4PFm あのさ
もう設計書はあるからバッチ作ってって言われて設計書見たんだが
「%0\..\xxx\yyy.batをコールする」とか書かれてて腰折れそうなんだけど…
もう設計書はあるからバッチ作ってって言われて設計書見たんだが
「%0\..\xxx\yyy.batをコールする」とか書かれてて腰折れそうなんだけど…
181デフォルトの名無しさん
2019/04/20(土) 00:03:36.64ID:oEi+Bse9 やりたい事が書いてあるかどうかだな
設計書作る手間で自分でかけとも思うけど
外注なら設計書から作りましょうねと諭して工数確保だな
設計書作る手間で自分でかけとも思うけど
外注なら設計書から作りましょうねと諭して工数確保だな
182デフォルトの名無しさん
2019/04/20(土) 00:08:13.21ID:vpsjY4OY183デフォルトの名無しさん
2019/04/20(土) 03:49:52.33ID:C+CxU9Uj >>175
隠しておかないと、悪いことしてるのがばれちゃうもんな
隠しておかないと、悪いことしてるのがばれちゃうもんな
185デフォルトの名無しさん
2019/04/21(日) 00:17:28.92ID:Aqd0ZKZB forfilesは遅いこと
フォルダのファイル数が多いと極端に遅くなる
フォルダのファイル数が多いと極端に遅くなる
186デフォルトの名無しさん
2019/04/27(土) 20:18:12.49ID:SEUESNkj >>174
exit で終了しないと不味いな…
exit で終了しないと不味いな…
187デフォルトの名無しさん
2019/05/07(火) 09:53:38.49ID:3q/iti6Z バッチとは違うけど、Microsoftさまの新しいターミナルアプリ「Windows Terminal」
https://forest.watch.impress.co.jp/docs/news/1183011.html
期待しても良いのかしら
https://forest.watch.impress.co.jp/docs/news/1183011.html
期待しても良いのかしら
188デフォルトの名無しさん
2019/05/08(水) 22:44:07.08ID:6yW2addd >>187
windows10のみだと俺は使えないや
windows10のみだと俺は使えないや
189デフォルトの名無しさん
2019/05/08(水) 22:45:41.01ID:o7I87B0d >>188
そりゃMacやLinuxでも使えるようにする性格のアプリではないだろ
そりゃMacやLinuxでも使えるようにする性格のアプリではないだろ
190デフォルトの名無しさん
2019/05/08(水) 23:18:47.67ID:6yW2addd191デフォルトの名無しさん
2019/05/08(水) 23:59:34.57ID:PAJNmCOy >>190
MacやLinuxで使えないから嫌だってお前は言ってるんだよ
MacやLinuxで使えないから嫌だってお前は言ってるんだよ
192デフォルトの名無しさん
2019/05/09(木) 00:09:50.10ID:Q5GOiLDw build 10.0.18362.0以上でVS2017必要みたいね
Win8とかじゃ使えない
Win8とかじゃ使えない
193デフォルトの名無しさん
2019/05/09(木) 00:35:06.30ID:e/QFUb7b win7/8.1は切捨てか
さすがMS
さすがMS
194デフォルトの名無しさん
2019/05/09(木) 00:47:39.20ID:W7EsCFlC >>193
サポート終了って言ってるんだから当たり前じゃね?
サポート終了って言ってるんだから当たり前じゃね?
195デフォルトの名無しさん
2019/05/18(土) 02:08:44.94ID:5JVQU2Kx スレチかもなのですが、「コアを吐く」ってどういう意味なのでしょうか?
196デフォルトの名無しさん
2019/05/18(土) 02:12:53.15ID:ChT5ZnKi コアダンプのことじゃね
197デフォルトの名無しさん
2019/05/19(日) 00:27:10.87ID:p20+5ZYI Win10で、.(ドット)から始まる4文字以上のフォルダを再帰的に削除したいのですがうまくいきません
for /d /r %%d in (.????*) do rmdir /s /q "%%d"
フォルダ名をスペースおきに書くと削除できますがワイルドカードを使って処理できないものでしょうか
for /d /r %%d in (.????*) do rmdir /s /q "%%d"
フォルダ名をスペースおきに書くと削除できますがワイルドカードを使って処理できないものでしょうか
198デフォルトの名無しさん
2019/05/19(日) 11:10:45.58ID:TZwQ5fCi for /f %%d in ('dir /s /b ^| findstr \\\.....') do rmdir /s /q "%%d"
とか?
とか?
199デフォルトの名無しさん
2019/05/19(日) 11:21:46.43ID:TZwQ5fCi >>198
dir /s /b /ad だった
dir /s /b /ad だった
200デフォルトの名無しさん
2019/05/19(日) 11:40:23.60ID:C4jenAHt >>197
for /d /r %%i in (.*) do set "a=%%~fi" & call :x "%%a%%"
pause & goto :eof
:x
set "b=%~nx1"
if not "%b:~4,1%"=="" rd /s /q %1
for /d /r %%i in (.*) do set "a=%%~fi" & call :x "%%a%%"
pause & goto :eof
:x
set "b=%~nx1"
if not "%b:~4,1%"=="" rd /s /q %1
201197
2019/05/19(日) 12:35:02.55ID:p20+5ZYI202デフォルトの名無しさん
2019/05/19(日) 13:00:03.54ID:C4jenAHt203デフォルトの名無しさん
2019/05/19(日) 13:23:52.91ID:C4jenAHt 分かった
隠し属性かよ
隠し属性かよ
204デフォルトの名無しさん
2019/05/20(月) 07:05:59.13ID:/nt8UTBS for /f "delims=" %%i in ('dir/adh/s/b .*') do (
set "a=%%~nxi" & call set "a=%%a:~4,1%%"
if defined a if exist "%%i" rd/s/q "%%i")
set "a=%%~nxi" & call set "a=%%a:~4,1%%"
if defined a if exist "%%i" rd/s/q "%%i")
205デフォルトの名無しさん
2019/05/26(日) 10:45:56.66ID:nyCVecKy 7-Zipスレからこちらに誘導されてきました
バッチファイルを実行して
指定したフォルダを7z圧縮し別の指定した場所へ保存する方法教えてください
バッチファイルを実行して
指定したフォルダを7z圧縮し別の指定した場所へ保存する方法教えてください
206デフォルトの名無しさん
2019/05/26(日) 10:55:25.50ID:QHGhwB6i >>205
7-zipのコマンドラインオプションみましたか?
7-zipのコマンドラインオプションみましたか?
207デフォルトの名無しさん
2019/05/26(日) 11:03:44.74ID:nyCVecKy >>206
見ていません
見ていません
208デフォルトの名無しさん
2019/05/26(日) 11:10:19.45ID:nyCVecKy >>206
今見ています
今見ています
209デフォルトの名無しさん
2019/05/26(日) 17:24:55.92ID:iePtiDR/ >>205
7-Zip のパスは自分の環境に合わせる
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files (x86)\7-zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
7-Zip のパスは自分の環境に合わせる
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files (x86)\7-zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
210デフォルトの名無しさん
2019/05/26(日) 18:42:28.21ID:nyCVecKy >>209
ありがとうございます
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=Z:\TE=
set "i=%i:"=%"
set /p o=Z:\zz=
set "o=%o:"=%"
set /p n=a=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
7-Zip のパス
C:\Program Files\7-Zip
ZドライブTEフォルダを圧縮
Zドライブzzフォルダに作成
書庫名aにしてみましたが動作しませんでした
誤った箇所ありますでしょうか
ありがとうございます
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=Z:\TE=
set "i=%i:"=%"
set /p o=Z:\zz=
set "o=%o:"=%"
set /p n=a=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
7-Zip のパス
C:\Program Files\7-Zip
ZドライブTEフォルダを圧縮
Zドライブzzフォルダに作成
書庫名aにしてみましたが動作しませんでした
誤った箇所ありますでしょうか
211デフォルトの名無しさん
2019/05/26(日) 19:22:25.25ID:4n4gfKEy >>210
書き換えないといけないのは7zipのパスのところだけであとのところはいじっちゃだめ
なので↓をメモ帳に貼り付けて適当な名前のbatファイルに保存が正解
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
書き換えないといけないのは7zipのパスのところだけであとのところはいじっちゃだめ
なので↓をメモ帳に貼り付けて適当な名前のbatファイルに保存が正解
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" & cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
212デフォルトの名無しさん
2019/05/26(日) 19:28:03.67ID:iePtiDR/213デフォルトの名無しさん
2019/05/26(日) 19:35:30.91ID:nyCVecKy214デフォルトの名無しさん
2019/05/30(木) 23:24:33.44ID:D3n586fF CMDの画面でこういうのを入力して実行したら
FOR /L %I IN (1,1,20) DO @CALL ECHO %I
画面の上のタイトルに文字が
うじゃうじゃ出て来るのはなぜ?
FOR /L %I IN (1,1,20) DO @CALL ECHO %I
画面の上のタイトルに文字が
うじゃうじゃ出て来るのはなぜ?
215デフォルトの名無しさん
2019/06/01(土) 22:51:37.17ID:cR7U/Ve2 最近の発見
remの前に空白をおける
: でラベルを示すが、:の前後に複数の空白、タブ、全角空白があってもよい
: タブ abc
またラベルの後の空白以降の文字列は無視するのでコメントを書ける
: abc エラーの場合
まあ、あまり使うところないけど
remの前に空白をおける
: でラベルを示すが、:の前後に複数の空白、タブ、全角空白があってもよい
: タブ abc
またラベルの後の空白以降の文字列は無視するのでコメントを書ける
: abc エラーの場合
まあ、あまり使うところないけど
216デフォルトの名無しさん
2019/06/02(日) 00:30:45.28ID:0ZBCelud 最後のは割と便利そうだけど
現場だとコメントはREM使えっていうコーディング規約に阻まれそうだw
現場だとコメントはREM使えっていうコーディング規約に阻まれそうだw
217デフォルトの名無しさん
2019/06/02(日) 03:07:05.57ID:rFF/uYB6 >>214
そもそも call の引数はバッチファイル名かラベルだ。
それ以外の、内部コマンドや外部コマンドじゃない。
そんな使い方、help のどこにも書いてない。
一見、正常に動作している様に見えるが、
内部では子プロセスが異常終了している。
だからタイトル名に子プロセスの残骸が残る。
call set なども動作はするが邪道。
そもそも call の引数はバッチファイル名かラベルだ。
それ以外の、内部コマンドや外部コマンドじゃない。
そんな使い方、help のどこにも書いてない。
一見、正常に動作している様に見えるが、
内部では子プロセスが異常終了している。
だからタイトル名に子プロセスの残骸が残る。
call set なども動作はするが邪道。
218デフォルトの名無しさん
2019/06/04(火) 23:08:45.76ID:YyzuHNes >>215
REM は「コマンド」だから前に空白が置ける。それは当然として。
ラベルをコメント代わりに使うのは止めとけ。
for や if コマンドの中で「インテンドを使って」コメントに使おうとすると弾かれる。
大人はバッチのコメントは REM で書くものだ。
Intel のドライバーインストーラーのバッチは奇麗だと思うぞ。
REM は「コマンド」だから前に空白が置ける。それは当然として。
ラベルをコメント代わりに使うのは止めとけ。
for や if コマンドの中で「インテンドを使って」コメントに使おうとすると弾かれる。
大人はバッチのコメントは REM で書くものだ。
Intel のドライバーインストーラーのバッチは奇麗だと思うぞ。
219デフォルトの名無しさん
2019/06/09(日) 19:33:03.04ID:ESLww06V 変数のサイズの最大値って何バイトなんだろう
@echo off
setlocal enabledelayedexpansion
set "a=x"
for /L %%i in (1,1,12) do set "a=!a!!a!"
set "b=x"
for /L %%i in (1,1,13) do set "b=!b!!b!"
if !a!==!b! (echo "a=b") else echo "a<b"
pause
結果は
"a=b"
@echo off
setlocal enabledelayedexpansion
set "a=x"
for /L %%i in (1,1,12) do set "a=!a!!a!"
set "b=x"
for /L %%i in (1,1,13) do set "b=!b!!b!"
if !a!==!b! (echo "a=b") else echo "a<b"
pause
結果は
"a=b"
220デフォルトの名無しさん
2019/06/09(日) 20:37:25.93ID:ESLww06V221デフォルトの名無しさん
2019/06/10(月) 07:14:20.96ID:24zpPZFc https://www.atmarkit.co.jp/ait/articles/1510/30/news041.html
内部的には1つの変数当たり最大32767文字
コマンドプロンプトの入力行は最大で8190文字
システム環境変数やユーザー環境変数の最大値は約2000文字(setxコマンドでは最大1024文字)
@echo off &setlocal
set a=x
set b=x
set /a i=2
:LOOP
set a=%a%x
echo %i%
if not %a%==%b% (
set b=%a%
set /a i+=1
goto :LOOP
)
pause
速くて正確ではないけど4093くらいで落ちた
コマンドの制限に掛かるみたいやね
内部的には1つの変数当たり最大32767文字
コマンドプロンプトの入力行は最大で8190文字
システム環境変数やユーザー環境変数の最大値は約2000文字(setxコマンドでは最大1024文字)
@echo off &setlocal
set a=x
set b=x
set /a i=2
:LOOP
set a=%a%x
echo %i%
if not %a%==%b% (
set b=%a%
set /a i+=1
goto :LOOP
)
pause
速くて正確ではないけど4093くらいで落ちた
コマンドの制限に掛かるみたいやね
222デフォルトの名無しさん
2019/06/10(月) 07:46:35.61ID:acT05/Jv223デフォルトの名無しさん
2019/06/10(月) 15:28:36.17ID:q9TwxOtc >>221
こういうのって統一して何バイトって決めないとやばくないのかな
windowsバージョン、英語、日本語、ヒンズー語など言語で微妙に変化すると、
おかしなことがおきたり、ウィルスの侵入口に利用される
こういうのって統一して何バイトって決めないとやばくないのかな
windowsバージョン、英語、日本語、ヒンズー語など言語で微妙に変化すると、
おかしなことがおきたり、ウィルスの侵入口に利用される
224デフォルトの名無しさん
2019/06/10(月) 18:52:33.54ID:acT05/Jv 遅延展開では変数名1文字なら値は8189文字まで。半角全角は無関係。
変数名が1文字増えると値の最大値は1文字減る
set "a=!b!" の様に二重引用符で囲むと最大値は2文字減る
遅延じゃないと a=%b% 以外のコマンドラインの文字数分が更に減る
変数 a が5000文字の場合
if %a%==%a% echo ng は落ちるが
if !a!==!a! echo ok は落ちない
変数名が1文字増えると値の最大値は1文字減る
set "a=!b!" の様に二重引用符で囲むと最大値は2文字減る
遅延じゃないと a=%b% 以外のコマンドラインの文字数分が更に減る
変数 a が5000文字の場合
if %a%==%a% echo ng は落ちるが
if !a!==!a! echo ok は落ちない
225デフォルトの名無しさん
2019/06/10(月) 18:58:22.71ID:OlE51f/u226デフォルトの名無しさん
2019/06/10(月) 19:19:36.75ID:acT05/Jv cmdは既に穴だらけなんで
227デフォルトの名無しさん
2019/06/10(月) 20:08:18.95ID:8z0TGIdq 穴だらけなのかもしれないが、外部に開いた穴は無いんで
悪用されるにはその前に侵入を許してしまってる必用がある
まあ侵入されたあとにコマンドプロンプトを使うようなウィルスはあるかは知らないけど
悪用されるにはその前に侵入を許してしまってる必用がある
まあ侵入されたあとにコマンドプロンプトを使うようなウィルスはあるかは知らないけど
228デフォルトの名無しさん
2019/06/11(火) 05:43:03.21ID:mwwG6pNT ワンラインで8kか
フルパス200文字位のファイルを40個D&Dしたらもうパンクか
ヘタレ過ぎる
フルパス200文字位のファイルを40個D&Dしたらもうパンクか
ヘタレ過ぎる
229デフォルトの名無しさん
2019/06/11(火) 16:08:50.98ID:AKGG1UAL 初心者故説明不足でしたらご指摘ください。
調べてもわからなく、ご教示いただけないでしょうか。
やりたいこと
Windowsアップデートのインストール一覧のうち
2019年分のみ抽出したい。
やったこと
一覧を取得するコマンドで情報をテキストファイルに出力。
その後findstrで2019分のみを抽出しようとしたけど
抽出出来なかった。
実行コマンド
Windowsアップデート一覧取得
wmic qfe get InstalledOn,HotFixID > aaa.txt
抽出コマンド
findstr "2019" aaa.txt
抽出コマンド実行後、結果が帰って来ませんでした。
なぜ結果が帰って来ないのかが全くわかりません。
どうか、対処法をご教示いただけないでしょうか。
調べてもわからなく、ご教示いただけないでしょうか。
やりたいこと
Windowsアップデートのインストール一覧のうち
2019年分のみ抽出したい。
やったこと
一覧を取得するコマンドで情報をテキストファイルに出力。
その後findstrで2019分のみを抽出しようとしたけど
抽出出来なかった。
実行コマンド
Windowsアップデート一覧取得
wmic qfe get InstalledOn,HotFixID > aaa.txt
抽出コマンド
findstr "2019" aaa.txt
抽出コマンド実行後、結果が帰って来ませんでした。
なぜ結果が帰って来ないのかが全くわかりません。
どうか、対処法をご教示いただけないでしょうか。
230デフォルトの名無しさん
2019/06/11(火) 16:21:50.48ID:mwwG6pNT ユニコードだからじゃない?
type aaa.txt > aaa1.txt
aaa1.txt でやってみろ
type aaa.txt > aaa1.txt
aaa1.txt でやってみろ
231デフォルトの名無しさん
2019/06/11(火) 16:30:25.48ID:SBjduyI+ wmicはリダイレクトするとUTF16LEになるから
230みたいに文字コード変換するか、パイプで
wmic qfe get InstalledOn,HotFixID | findstr /n "2019"
230みたいに文字コード変換するか、パイプで
wmic qfe get InstalledOn,HotFixID | findstr /n "2019"
232デフォルトの名無しさん
2019/06/11(火) 16:31:56.22ID:SBjduyI+ あ、/n付けちゃったけどまぁいいか
233デフォルトの名無しさん
2019/06/11(火) 16:53:09.70ID:AKGG1UAL234デフォルトの名無しさん
2019/06/13(木) 10:13:44.37ID:P3O2UGUp Explorerから「送る」SendTo で使うバッチの中の pushd "%~dp1" が失敗するケースて有り得る?
送るから使うって事はアクセス出来てるはずなので失敗する事はないと思うんだけど
pushd "%~dp1"||exit とか失敗した場合の処理書いといた方が良いのかな
送るから使うって事はアクセス出来てるはずなので失敗する事はないと思うんだけど
pushd "%~dp1"||exit とか失敗した場合の処理書いといた方が良いのかな
235デフォルトの名無しさん
2019/06/13(木) 12:37:34.91ID:qazE1A0w >>234
パスの中に全角スペースが入っていて半角スペースが入ってない場合なんかは失敗するんじゃないかな
パスの中に全角スペースが入っていて半角スペースが入ってない場合なんかは失敗するんじゃないかな
236デフォルトの名無しさん
2019/06/13(木) 14:43:51.05ID:rRFcU9uI237デフォルトの名無しさん
2019/06/13(木) 14:50:46.43ID:P3O2UGUp >>235
その問題、失念してた。ありがとう
パスに半角スペースが無くて、全角sp" "、コロン","、セミコロン";"、ハット"^"、イコール"=" の何れかが有る時だね
半角sp有る無し関係なく引数全部""括るようにすれば良いのにまだこの問題残ってたんだね
意図しない動作ではあるものの最初にデリミタ文字を含むフォルダの親フォルダにカレント移動して pushd 自体は成功する
pushd が失敗する事例を知っていたら教えて欲しい
この問題は対応面倒なのでパスに半角スペースを含めるようにして対処するよ
その問題、失念してた。ありがとう
パスに半角スペースが無くて、全角sp" "、コロン","、セミコロン";"、ハット"^"、イコール"=" の何れかが有る時だね
半角sp有る無し関係なく引数全部""括るようにすれば良いのにまだこの問題残ってたんだね
意図しない動作ではあるものの最初にデリミタ文字を含むフォルダの親フォルダにカレント移動して pushd 自体は成功する
pushd が失敗する事例を知っていたら教えて欲しい
この問題は対応面倒なのでパスに半角スペースを含めるようにして対処するよ
238デフォルトの名無しさん
2019/06/13(木) 15:04:31.95ID:rRFcU9uI239234
2019/06/13(木) 16:36:42.36ID:P3O2UGUp 送るから使う前提で
pushd "%~dp1"||エラー処理
のエラー処理を書く意味あるかな?てのが聞きたかった事なんだ
まあおまじない的にpause&exitしとくよ。ありがとう
pushd "%~dp1"||エラー処理
のエラー処理を書く意味あるかな?てのが聞きたかった事なんだ
まあおまじない的にpause&exitしとくよ。ありがとう
240デフォルトの名無しさん
2019/06/13(木) 17:10:58.72ID:rRFcU9uI 引数全部で
if "%~dp1"=="%~dp2"
if "%~dp1"=="%~dp3"
if "%~dp1"=="%~dp4"
とか確認すりゃ問題ない
if "%~dp1"=="%~dp2"
if "%~dp1"=="%~dp3"
if "%~dp1"=="%~dp4"
とか確認すりゃ問題ない
241デフォルトの名無しさん
2019/06/13(木) 17:24:03.99ID:rRFcU9uI >>240
でもファイル名使うとダメだな
でもファイル名使うとダメだな
242デフォルトの名無しさん
2019/06/14(金) 15:25:04.04ID:/ScwnRxc 誰もツッコミ無しか
SendTo とか D&D は何もしなくても自動的に
送り側のディレクトリに移動するんだが
SendTo とか D&D は何もしなくても自動的に
送り側のディレクトリに移動するんだが
243デフォルトの名無しさん
2019/06/14(金) 15:52:59.01ID:/ScwnRxc SendTo にバッチ本体じゃなくて
ショートカットを入れたのかね
でもプロパティの作業フォルダを空にすればいい
怪しげな引数を利用するよりマシだろ
ショートカットを入れたのかね
でもプロパティの作業フォルダを空にすればいい
怪しげな引数を利用するよりマシだろ
244デフォルトの名無しさん
2019/06/15(土) 09:44:04.71ID:wrdBniJb 7-ZIPの 7za.exe でワイルドカード使ったときにサブフォルダを除外するにはどうしたらいいでしょうか?
-r-を付けてもなぜか効かないんですが
7za.exe a XXX.zip -r- *
-r-を付けてもなぜか効かないんですが
7za.exe a XXX.zip -r- *
245デフォルトの名無しさん
2019/06/15(土) 12:34:19.95ID:/kIGVJHV >>244
7zaは経験ないが7zと同じだろう
引数に*としたらサブディレクトリも含む
サブディレクトリを指定したら、それ以下の全部を含む
そこでスイッチは関係ない
ファイルだけ圧縮したいなら
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist archive.7z del archive.7z
set a=
setlocal enabledelayedexpansion
for %%i in (*) do set a=!a! "%%i"
7z a archive.7z !a%!
pause
7zaは経験ないが7zと同じだろう
引数に*としたらサブディレクトリも含む
サブディレクトリを指定したら、それ以下の全部を含む
そこでスイッチは関係ない
ファイルだけ圧縮したいなら
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist archive.7z del archive.7z
set a=
setlocal enabledelayedexpansion
for %%i in (*) do set a=!a! "%%i"
7z a archive.7z !a%!
pause
246デフォルトの名無しさん
2019/06/15(土) 12:36:06.42ID:/kIGVJHV ああ、すまん
.zip に置き換えて
.zip に置き換えて
247デフォルトの名無しさん
2019/06/15(土) 13:27:41.74ID:/kIGVJHV >>245はファイル名に!^があると誤動作するので
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist XXX.zip del XXX.zip
for %%i in (*) do 7za a XXX.zip "%%i"
pause
にした方がいいかもね
ちなみにInfo-ZIPのzip.exeでは
zip XXX.zip *
だけでいいが空のサブディレクトリを作成する
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist XXX.zip del XXX.zip
for %%i in (*) do 7za a XXX.zip "%%i"
pause
にした方がいいかもね
ちなみにInfo-ZIPのzip.exeでは
zip XXX.zip *
だけでいいが空のサブディレクトリを作成する
248デフォルトの名無しさん
2019/06/17(月) 08:25:16.99ID:gSWoSWwj .commandでターミナルを開いてpython3 /hoge/test.pyを入力、エンターを送信してpyファイルを実行したいのですがご教授ください。m(_ _)m
echo python3 /hoge/test.pyとするとターミナルに入力はされるのですが、pythonが実行されません。
ちなみに.batでは、
cd C:\hoge\
cmd /k python test.py
でpythonを実行する事ができました。
.commandで同じ事をするにはどうすればいいでしょうか?
echo python3 /hoge/test.pyとするとターミナルに入力はされるのですが、pythonが実行されません。
ちなみに.batでは、
cd C:\hoge\
cmd /k python test.py
でpythonを実行する事ができました。
.commandで同じ事をするにはどうすればいいでしょうか?
249デフォルトの名無しさん
2019/06/17(月) 13:48:44.19ID:gSWoSWwj 248です
解決しました。m(_ _)m
echoなんか付けずに
python3 /hoge/test.py
でpythonが実行できました。ありがとうございます。
解決しました。m(_ _)m
echoなんか付けずに
python3 /hoge/test.py
でpythonが実行できました。ありがとうございます。
250デフォルトの名無しさん
2019/06/17(月) 18:30:49.93ID:/bUEZ7B5 バッチファイルからbeep音を出す
echo ^G >beep.bat
^G は コントロールキーとG
beep.batを実行すると音は出るが、エラーも出るので
type beep.bat
のほうがよい
beep.bat 2>nul
でエラーは消えるはずだが、なぜか音も出ないことがある
こういう基本コマンドがなぜかない
echo ^G >beep.bat
^G は コントロールキーとG
beep.batを実行すると音は出るが、エラーも出るので
type beep.bat
のほうがよい
beep.bat 2>nul
でエラーは消えるはずだが、なぜか音も出ないことがある
こういう基本コマンドがなぜかない
251デフォルトの名無しさん
2019/06/17(月) 21:28:51.00ID:KEFOQI4b >>250
beep.bat
でエラーが出るのは当然
beep.bat の中身は 「あ」 と一文字書いてあるのと同じようなものだから
コマンドになってない
だから
echo ^G> beep.dat
echo type beep.txt> beep.bat
とするか
echo @echo ^G> beep.bat
とすれば
beep.bat実行でエラーは出ない
ちなみに@echoとしてechoの頭に@をつける理由は
そうしないと、
実行コマンドが表示される時点で一回音が鳴り
echo が実行されることによって音が鳴るので
結果として2回音が鳴ることになるため
beep.bat
でエラーが出るのは当然
beep.bat の中身は 「あ」 と一文字書いてあるのと同じようなものだから
コマンドになってない
だから
echo ^G> beep.dat
echo type beep.txt> beep.bat
とするか
echo @echo ^G> beep.bat
とすれば
beep.bat実行でエラーは出ない
ちなみに@echoとしてechoの頭に@をつける理由は
そうしないと、
実行コマンドが表示される時点で一回音が鳴り
echo が実行されることによって音が鳴るので
結果として2回音が鳴ることになるため
252デフォルトの名無しさん
2019/06/17(月) 22:13:21.14ID:KEFOQI4b 無料のエディタでも制御文字を扱えるものがあるので
そういったものを使うと便利かと思います
たとえばNotepad++では制御文字を表示することができます
https://www.howtonote.jp/notepadplusplus/install/index10.html
入力は編集-文字コード表から
サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした
(自分はユーザではなく詳しくないので実際はあるのかもしれない)
http://sakura-editor.sourceforge.net/htmlhelp/HLP000255.html
そういったものを使うと便利かと思います
たとえばNotepad++では制御文字を表示することができます
https://www.howtonote.jp/notepadplusplus/install/index10.html
入力は編集-文字コード表から
サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした
(自分はユーザではなく詳しくないので実際はあるのかもしれない)
http://sakura-editor.sourceforge.net/htmlhelp/HLP000255.html
253デフォルトの名無しさん
2019/06/17(月) 22:46:13.03ID:kzHmUXK8 トリッキーだが、コントロールコードを直接書かないで実現することもできるね
ここの過去ログ%11にあったけど
for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I
echo %BEL%
ここの過去ログ%11にあったけど
for /f "delims=0" %%I in ('cmd /u /c echo 〇') do set BEL=%%I
echo %BEL%
254デフォルトの名無しさん
2019/06/17(月) 23:09:42.80ID:+j+1wiRe バッチにバイナリエディタで入力したら
どんな値でも変数に代入出来るのかな?
どんな値でも変数に代入出来るのかな?
255デフォルトの名無しさん
2019/06/17(月) 23:10:40.48ID:KEFOQI4b256デフォルトの名無しさん
2019/06/18(火) 17:34:44.10ID:eep67jJ0 cls|choice 1>nul 2>nul
257デフォルトの名無しさん
2019/06/18(火) 19:33:08.53ID:KnqBLmEX >>251
なるほど、どっちもありですね
echo ^G> beep.dat
echo type beep.dat> beep.bat
echo @echo ^G> beep.bat
@echo のこんな使い方は初めて見た、知らなかったです
なるほど、どっちもありですね
echo ^G> beep.dat
echo type beep.dat> beep.bat
echo @echo ^G> beep.bat
@echo のこんな使い方は初めて見た、知らなかったです
258デフォルトの名無しさん
2019/06/23(日) 06:51:19.02ID:dygsK1bo Windows Terminal早速試せるみたい。
Microsoft’s new Windows Terminal now available to download for Windows 10 - The Verge
https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features
Microsoft’s new Windows Terminal now available to download for Windows 10 - The Verge
https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features
259デフォルトの名無しさん
2019/06/23(日) 12:23:35.72ID:Lc+3aX4/ >>258 そこに書いてある
Microsoftはまた、Linux用のWindows Subsystem(WSL)の
パフォーマンスを向上させるために、
完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます。
こっちの方が気になるなあ
Microsoftはまた、Linux用のWindows Subsystem(WSL)の
パフォーマンスを向上させるために、
完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます。
こっちの方が気になるなあ
260デフォルトの名無しさん
2019/06/23(日) 12:41:20.55ID:8sWJbccc WSL2でしょ
261デフォルトの名無しさん
2019/06/25(火) 00:46:23.52ID:6j3DQJ1O Windows7からWindows10に変えたら、IME単語登録用ソフトのIMECが動かない。
神は死んだ・・・
神は死んだ・・・
262デフォルトの名無しさん
2019/06/25(火) 19:20:48.71ID:sBqqHKRF chcp 65001
if "hoge"=="hoge" (
echo あああ
echo いいい
)
pause
上みたいなbatをUTF-8で保存して実行すると
'o' is not recognized as an internal or external command,
と言われてエラーになるんですが何故ですか?
if "hoge"=="hoge" (
echo あああ
echo いいい
)
pause
上みたいなbatをUTF-8で保存して実行すると
'o' is not recognized as an internal or external command,
と言われてエラーになるんですが何故ですか?
263デフォルトの名無しさん
2019/06/25(火) 19:23:12.67ID:sBqqHKRF echoの前に半角スペース3つです
264デフォルトの名無しさん
2019/06/25(火) 19:52:58.06ID:O4gheXA8 良く分からんが >>258 の奴でやると
もしかしたら上手くいくかもね
もしかしたら上手くいくかもね
265デフォルトの名無しさん
2019/06/25(火) 19:58:43.79ID:O4gheXA8 chcp 65001
if "hoge"=="hoge" (
echo あああ& rem
echo いいい
)
pause
if "hoge"=="hoge" (
echo あああ& rem
echo いいい
)
pause
266デフォルトの名無しさん
2019/06/25(火) 20:17:53.34ID:O4gheXA8 行末が非asciiだと不味いようだ
267デフォルトの名無しさん
2019/06/25(火) 20:18:26.26ID:sBqqHKRF268デフォルトの名無しさん
2019/06/25(火) 20:34:02.78ID:O4gheXA8 上手く動作しないという事はバグじゃないですかね
それ以上はcmdの作者じゃないので分からん
それ以上はcmdの作者じゃないので分からん
269デフォルトの名無しさん
2019/06/25(火) 20:49:18.67ID:yTOc80/J そもそもUTF-8保存バッチなんてまともに動くの見た事無い。
バッチはUS-AsciiかシフトJIS保存が安全。いくらchcpでコードページが動かせようとも
バッチはUS-AsciiかシフトJIS保存が安全。いくらchcpでコードページが動かせようとも
270デフォルトの名無しさん
2019/06/25(火) 20:51:13.72ID:yTOc80/J "シフトJIS(932) だけ? いいえ、そんなことはありません。例えば、EUC-JP(20932) も可能です。しかし、Unicode(1200)、UTF-7(65000)、UTF-8(65001)、JIS(50220) はダメです。
なので、実際上?は、シフトJIS(932) だけのようなものです。"
http://scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html
なので、実際上?は、シフトJIS(932) だけのようなものです。"
http://scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html
271デフォルトの名無しさん
2019/06/25(火) 21:18:10.64ID:O4gheXA8 ユニコードでしか表示できない文字を表示したいならともかく
"あああ" とか "いいい" じゃ全く意味が無いな
"あああ" とか "いいい" じゃ全く意味が無いな
272デフォルトの名無しさん
2019/06/26(水) 07:19:54.19ID:/FHvjGPn やはりbatをUTF-8で動かすと色々不安定みたいですね
素直にShift_JISで書くことにします
素直にShift_JISで書くことにします
273デフォルトの名無しさん
2019/06/26(水) 08:01:27.89ID:5bijRuYR ASCIIで書いてもええんやで?
274デフォルトの名無しさん
2019/06/26(水) 08:13:25.58ID:QearoGxm Asciiで"あああ"や"いいい"が表せるかバカ
275デフォルトの名無しさん
2019/06/26(水) 14:39:32.78ID:wh3oZ78w シフトJISで表せない文字の例
@echo off
chcp 65000 > nul
set a=+nddRZwDA-
chcp 932 > nul
set a1=%a:~0,1%
set a2=%a:~1,1%
set a3=%a:~2,1%
echo 森%a1%外の「%a1%」
echo %a2%田百閧フ「%a2%」
echo アクセント符号付きのアルファベット「%a3%」
pause > nul
@echo off
chcp 65000 > nul
set a=+nddRZwDA-
chcp 932 > nul
set a1=%a:~0,1%
set a2=%a:~1,1%
set a3=%a:~2,1%
echo 森%a1%外の「%a1%」
echo %a2%田百閧フ「%a2%」
echo アクセント符号付きのアルファベット「%a3%」
pause > nul
276デフォルトの名無しさん
2019/06/26(水) 19:26:37.84ID:jdth62TN ハードコーディングする必要ないだろ…
277デフォルトの名無しさん
2019/06/26(水) 20:16:33.91ID:wh3oZ78w ユニコードのバッチでいいなら必要ないな
echoは行末に半角スペース付けると多分ok
setは二重引用符で囲めばいい
echoは行末に半角スペース付けると多分ok
setは二重引用符で囲めばいい
278デフォルトの名無しさん
2019/06/27(木) 00:26:23.36ID:65pELY4n 会得したところで今後の人生に役に立たない、もしくは自分の仕事を受け継いだ「標準的な知識の」人間に理解できないことはしない方がいい。
一子相伝の拳法とかじゃねーんだから。
バッチスクリプトに限らず、仕事でそういうことを意識できない奴は、大抵、後から見て自分自身でも読めないコードを書くものだ。
一子相伝の拳法とかじゃねーんだから。
バッチスクリプトに限らず、仕事でそういうことを意識できない奴は、大抵、後から見て自分自身でも読めないコードを書くものだ。
279デフォルトの名無しさん
2019/06/27(木) 00:27:58.62ID:65pELY4n このスクリプトは自分で終わり…
とかいう書き捨てスクリプトなら大いにやって良いと思う。
使い終わったらちゃんと捨てとけよ。
とかいう書き捨てスクリプトなら大いにやって良いと思う。
使い終わったらちゃんと捨てとけよ。
280デフォルトの名無しさん
2019/06/27(木) 04:32:59.89ID:41DSIiqO この 低レベルに合わせる事こそ唯一の原則 みたいな風潮すごいイヤ
こんなとこまで啓蒙しなくていいよ気持ち悪い
こんなとこまで啓蒙しなくていいよ気持ち悪い
281デフォルトの名無しさん
2019/06/27(木) 04:53:05.65ID:6UZ42pkx282279
2019/06/28(金) 00:34:45.44ID:khpSyJhs >>280
低レベルに合わせるわけじゃねーよ。
現代的なスクリプト言語を学んできたような人間に対して
「バッチスクリプトだけで通じる特殊で小賢しいハック」
を読ませたり書かせたりするべきじゃない、自分だけに留めとけ、結局誰得になる、って話が何故分からないかな?
今日も
「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」
なんつったアホンダラを叱りつけたところだ。
「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ。そりゃ、制御コードは「お前のエディタでは」見えないよ。アホか。
制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した。
実際、実環境でこっそりテストしてみたらやっぱり処理はコケた。
低レベルに合わせるわけじゃねーよ。
現代的なスクリプト言語を学んできたような人間に対して
「バッチスクリプトだけで通じる特殊で小賢しいハック」
を読ませたり書かせたりするべきじゃない、自分だけに留めとけ、結局誰得になる、って話が何故分からないかな?
今日も
「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」
なんつったアホンダラを叱りつけたところだ。
「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ。そりゃ、制御コードは「お前のエディタでは」見えないよ。アホか。
制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した。
実際、実環境でこっそりテストしてみたらやっぱり処理はコケた。
283279
2019/06/28(金) 00:39:45.58ID:khpSyJhs で、バッチにもイディオムがある。
「AをしたいときはBと書け」ってやつ。
そういうものは、たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない。
つまり、
・言語や環境が想定している範囲内ならやってよし。むしろやれ。
・範囲外ならやるな。やるなら自己責任で他人に迷惑を掛けない程度に。
ということ。
これはどんな言語やシステムにも言えること。
「AをしたいときはBと書け」ってやつ。
そういうものは、たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない。
つまり、
・言語や環境が想定している範囲内ならやってよし。むしろやれ。
・範囲外ならやるな。やるなら自己責任で他人に迷惑を掛けない程度に。
ということ。
これはどんな言語やシステムにも言えること。
284279
2019/06/28(金) 00:51:59.74ID:khpSyJhs もっと言うと、何かを開発するときにまず最初にやることってのが
「この言語や環境はどこまで想定しているのかを調べる」
だったりする。
自分のやりたいことに沿ってくれるかくれないのか。
くれないなら処理の一部だけやらせるに留めるなり、最初から使わないなり、そういう選択をする。
言語や環境に縛りがある場合なら、責任者の言質を取るなり、書面で誓約を取ってから作る。
見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい。
「このコード書いた奴、死ねばいいのに」って言われても俺には関係ない、くらいの根性腐った奴ならそうすればいい。
「この言語や環境はどこまで想定しているのかを調べる」
だったりする。
自分のやりたいことに沿ってくれるかくれないのか。
くれないなら処理の一部だけやらせるに留めるなり、最初から使わないなり、そういう選択をする。
言語や環境に縛りがある場合なら、責任者の言質を取るなり、書面で誓約を取ってから作る。
見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい。
「このコード書いた奴、死ねばいいのに」って言われても俺には関係ない、くらいの根性腐った奴ならそうすればいい。
285デフォルトの名無しさん
2019/06/28(金) 04:47:52.79ID:+wrrcV+u だからキモイって
創価学会員並みにキモイ
狂信者の啓蒙活動と同じ
こんなところではなくおまえの会社でやってろ
創価学会員並みにキモイ
狂信者の啓蒙活動と同じ
こんなところではなくおまえの会社でやってろ
286デフォルトの名無しさん
2019/06/28(金) 07:00:46.98ID:n6DQpX/4 しかしWin環境はテキストのBOMマーク推奨なのに、for /fで読み出しするとBOMをわざわざ表示するのバカだよな。
過去の検討不足がまんま固定してる
過去の検討不足がまんま固定してる
287デフォルトの名無しさん
2019/06/28(金) 07:22:18.87ID:utv5/5Cv 面倒くさい奴が一人いるな
何を書こうが勝手だが、ここはお前の職場じゃないぞ
何を書こうが勝手だが、ここはお前の職場じゃないぞ
288デフォルトの名無しさん
2019/06/28(金) 07:41:24.76ID:utv5/5Cv289デフォルトの名無しさん
2019/06/28(金) 23:56:34.27ID:b/1HFBuK290デフォルトの名無しさん
2019/06/29(土) 01:27:00.86ID:LLveF6E3 だから何?
291デフォルトの名無しさん
2019/07/04(木) 08:37:48.34ID:yoyjVAJo Win10 v1903
メモ帳で新規作成したテキストがtypeで化ける
もはやSJISは既定値ではない
cmdは旧態依然
メモ帳で新規作成したテキストがtypeで化ける
もはやSJISは既定値ではない
cmdは旧態依然
292デフォルトの名無しさん
2019/07/04(木) 17:34:32.60ID:9mSpzETW まあ chcpすりゃいいだけだし
293デフォルトの名無しさん
2019/07/04(木) 18:30:22.69ID:wRHHZz1p 日本語レイアウトが崩れるからだめ
294デフォルトの名無しさん
2019/07/04(木) 21:43:07.98ID:y34WtIiv 以前は実行中のバッチファイルを編集保存、行を追加したり減らしたり、すると
エラーになってたと思うんだけど、何かエラーにならなくなった?
Windows10 1903 からの変更?
たまたまなのかな?
エラーになってたと思うんだけど、何かエラーにならなくなった?
Windows10 1903 からの変更?
たまたまなのかな?
295デフォルトの名無しさん
2019/07/04(木) 21:57:41.98ID:y34WtIiv296デフォルトの名無しさん
2019/07/05(金) 00:07:51.66ID:BL7Y7b8G 実行中の行やその直後の行を追加したり削ったりすれば、
同じ処理が繰り返しになったり、必要な処理がスキップされる形になって
挙動がおかしくなるな
同じ処理が繰り返しになったり、必要な処理がスキップされる形になって
挙動がおかしくなるな
297デフォルトの名無しさん
2019/07/05(金) 20:30:36.68ID:Osj0+Img バッチファイルスクリプトって働き方改革になるの?
298デフォルトの名無しさん
2019/07/05(金) 21:19:11.24ID:zBRgAgd8 Powershellが10年経って育った今からバッチを学ぶ意義は薄い
299デフォルトの名無しさん
2019/07/06(土) 08:00:17.95ID:NPkITZNc >>296
全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね
全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね
300デフォルトの名無しさん
2019/07/06(土) 08:01:28.83ID:NPkITZNc301デフォルトの名無しさん
2019/07/06(土) 10:23:31.70ID:OJAqpfME >>299
インタープリターではなくなる
インタープリターではなくなる
302デフォルトの名無しさん
2019/07/06(土) 10:31:09.33ID:SnF6bIfm 働き方改革?
303デフォルトの名無しさん
2019/07/06(土) 10:53:24.31ID:NPkITZNc >>301
意味わからん…
意味わからん…
304デフォルトの名無しさん
2019/07/06(土) 10:59:51.87ID:OJAqpfME305デフォルトの名無しさん
2019/07/06(土) 11:04:50.99ID:NPkITZNc >>304
> そもインタープリターは行単位でのみ読み込み解釈実行する仕様。
逐次解釈は別にメモリーからでもいいだろ
> 行内容を変えても反映されないんじゃインタープリターにならない
そもそも行内容変えたらおかしくなるって話なんだがw
> そもインタープリターは行単位でのみ読み込み解釈実行する仕様。
逐次解釈は別にメモリーからでもいいだろ
> 行内容を変えても反映されないんじゃインタープリターにならない
そもそも行内容変えたらおかしくなるって話なんだがw
306デフォルトの名無しさん
2019/07/06(土) 11:12:26.69ID:OJAqpfME307デフォルトの名無しさん
2019/07/06(土) 11:45:00.41ID:ddaI9LPq ディスクキャッシュなしだとクッソ遅いんだよな
308デフォルトの名無しさん
2019/07/06(土) 11:54:17.26ID:NPkITZNc309デフォルトの名無しさん
2019/07/06(土) 12:11:18.65ID:OJAqpfME310デフォルトの名無しさん
2019/07/06(土) 12:13:38.81ID:NPkITZNc > メモリに全部読み込んでファイルロックかけちゃえばとか
日本語の理解力もないのかよ…
日本語の理解力もないのかよ…
311デフォルトの名無しさん
2019/07/06(土) 12:20:37.36ID:OJAqpfME 仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ、自分で制作しておやりなさい」としか
ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
312デフォルトの名無しさん
2019/07/06(土) 12:45:33.27ID:SnF6bIfm 横から失礼します。
例えば、バッチじゃないけど、
中間コード生成するのは、
インタプリタじゃないの?
例えば、バッチじゃないけど、
中間コード生成するのは、
インタプリタじゃないの?
313デフォルトの名無しさん
2019/07/06(土) 12:53:22.08ID:NPkITZNc > ディスク上のプロフラムファイルを処理しろと指示しておいて、実行中にプログラムファイル弄る方がバカでしょ?
うんうん、
> 行内容を変えても反映されないんじゃインタープリターにならない
とか言ってたバカに言ってやれよww
うんうん、
> 行内容を変えても反映されないんじゃインタープリターにならない
とか言ってたバカに言ってやれよww
314デフォルトの名無しさん
2019/07/06(土) 13:25:39.62ID:OJAqpfME315デフォルトの名無しさん
2019/07/06(土) 13:31:06.82ID:NPkITZNc > 実行中にプログラムファイル弄る方がバカでしょ?
なのに内容変えたら反映しろとか頭おかしいw
もう自分が何を指摘されてるかもわかってないんだろうな
なのに内容変えたら反映しろとか頭おかしいw
もう自分が何を指摘されてるかもわかってないんだろうな
316デフォルトの名無しさん
2019/07/06(土) 14:13:50.98ID:OJAqpfME 動作がバグらないように行内容をいじる方法もあるからなー
バカには気づけないのかもな
バカには気づけないのかもな
317デフォルトの名無しさん
2019/07/06(土) 14:26:59.31ID:NPkITZNc しれっと話し変えててウケる~w
318デフォルトの名無しさん
2019/07/06(土) 14:27:43.94ID:ZOT0kh7c title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう
timeout 5
powershell sleep 5
Powershellを呼び出してもタイトルが変化しない方法ありませんか?
timeout 5
powershell sleep 5
Powershellを呼び出してもタイトルが変化しない方法ありませんか?
319デフォルトの名無しさん
2019/07/06(土) 15:18:42.27ID:Mj6xLmMK なんか色々とっちらかってるけど
入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ
まとめて実行する方法がバッチ
バッチを書くための言語の種類がスクリプト
なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど
バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない
あまり言われることはないけどC言語なんかも手順をまとめて記述するという
意味ではバッチ
そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに
変換するのがコンパイラ
なので>>312が言うような中間コードを生成するのは処理的にはバッチのコンパイル
C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで
中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど、これらの
エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する
ことも出来るようになっている
インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な
インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので、
バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって
いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない
Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど、バッチ
スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき、
文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで
実行できるバッチスクリプトって言うものも存在する
逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて
コードを読み込んで実行するので、実行中にファイルを書き換えても読み込まれた
コードが変わるわけではないのでそのまま実行できる
入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ
まとめて実行する方法がバッチ
バッチを書くための言語の種類がスクリプト
なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど
バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない
あまり言われることはないけどC言語なんかも手順をまとめて記述するという
意味ではバッチ
そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに
変換するのがコンパイラ
なので>>312が言うような中間コードを生成するのは処理的にはバッチのコンパイル
C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで
中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど、これらの
エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する
ことも出来るようになっている
インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な
インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので、
バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって
いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない
Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど、バッチ
スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき、
文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで
実行できるバッチスクリプトって言うものも存在する
逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて
コードを読み込んで実行するので、実行中にファイルを書き換えても読み込まれた
コードが変わるわけではないのでそのまま実行できる
320デフォルトの名無しさん
2019/07/06(土) 15:32:56.64ID:Es9FYwgG バカの長文ウザい
321デフォルトの名無しさん
2019/07/06(土) 16:47:17.04ID:edODQM35 理解できないときの一行レス乙
322デフォルトの名無しさん
2019/07/06(土) 17:04:06.81ID:l+THgL+v324デフォルトの名無しさん
2019/07/06(土) 18:13:58.11ID:yCp3HJnn325デフォルトの名無しさん
2019/07/06(土) 18:30:06.42ID:edODQM35 アホとバカは意味がちゃうで
326デフォルトの名無しさん
2019/07/07(日) 00:42:47.20ID:YVv/+K6C 貴重なメモリをバッチなんかに使われたくない
ましてやファイルハンドル or FCBを消費するなんて考えたくもない
ましてやファイルハンドル or FCBを消費するなんて考えたくもない
327デフォルトの名無しさん
2019/07/07(日) 17:57:51.72ID:sK6+FwWI 書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる
これもインタープリタゆえのメリット
これもインタープリタゆえのメリット
328デフォルトの名無しさん
2019/07/17(水) 22:50:53.76ID:2IS3Ei7C 指定したURLをIEで開くバッチファイルを作りたいのですが、以下のいずれの書き方でもうまく起動しませんでした。
どのように記述すれば良いのでしょうか?
start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/"
start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/"
start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
cmd /c start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/"
cmd /c start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/"
cmd /c start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
どのように記述すれば良いのでしょうか?
start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/"
start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/"
start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
cmd /c start "" """C:\Program Files\internet explorer\iexplore.exe"" https://www.yahoo.co.jp/"
cmd /c start "" "'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/"
cmd /c start 'C:\Program Files\internet explorer\iexplore.exe' https://www.yahoo.co.jp/
329デフォルトの名無しさん
2019/07/17(水) 22:52:08.85ID:2IS3Ei7C ↑書き忘れましたが、IEを起動したらバッチファイル自体はすぐに終了して欲しいです。
330デフォルトの名無しさん
2019/07/17(水) 22:58:10.74ID:t7LU6uHU これで普通に開けたけど
start "" "C:\Program Files\internet explorer\iexplore.exe" "https://www.yahoo.co.jp/"
exit
start "" "C:\Program Files\internet explorer\iexplore.exe" "https://www.yahoo.co.jp/"
exit
331デフォルトの名無しさん
2019/07/17(水) 23:41:41.05ID:2IS3Ei7C >>330
助かりました。ありがとうございます><
助かりました。ありがとうございます><
332デフォルトの名無しさん
2019/07/22(月) 20:50:29.11ID:64jFVFKi 質問です
chcp を設定後に日本語テキストファイルを type しても
なぜか数行ごとに部分的に文字化けします
正しく表示させる方法はありますか
ファイルをコード変換するしかないでしょうか
20932 (EUC-JP)
50220 (JIS)
65000 (UTF-7)
65001 (UTF-8)
chcp を設定後に日本語テキストファイルを type しても
なぜか数行ごとに部分的に文字化けします
正しく表示させる方法はありますか
ファイルをコード変換するしかないでしょうか
20932 (EUC-JP)
50220 (JIS)
65000 (UTF-7)
65001 (UTF-8)
333デフォルトの名無しさん
2019/07/23(火) 00:29:27.63ID:NmYCCAI2 正常に表示できる部分もあるのか?
コマンドプロンプトのフォント設定はレジストリをいじればできるようだが
chcp したとしても
各コードに合わせた日本語フォントがないと思う
ファイルをコード変換には nkf などを利用すればよい
もちろんcp932に変換できない文字がありえる点には注意
コマンドプロンプトのフォント設定はレジストリをいじればできるようだが
chcp したとしても
各コードに合わせた日本語フォントがないと思う
ファイルをコード変換には nkf などを利用すればよい
もちろんcp932に変換できない文字がありえる点には注意
334デフォルトの名無しさん
2019/07/23(火) 01:19:58.32ID:dqAnc0cb 横から失礼。多分フォントの問題じゃないなあ。再現してみる。
@echo off
del a.txt
set "a=ああああああああああああああああああああああああああああああああああ"
chcp 65001
for /l %%i in (1,1,10) do echo %a% >> a.txt
start notepad a.txt
type a.txt
pause
goto :eof
@echo off
del a.txt
set "a=ああああああああああああああああああああああああああああああああああ"
chcp 65001
for /l %%i in (1,1,10) do echo %a% >> a.txt
start notepad a.txt
type a.txt
pause
goto :eof
335デフォルトの名無しさん
2019/07/23(火) 13:00:19.24ID:dqAnc0cb >>332 typeの代替えバッチ
@echo off & set /a b=1
for /f "delims=:" %%i in ('type "%~1" ^| findstr /n /r /c:"^$"') do call :x %%i
set /a a%b%=0,b=1,c=1
for /f delims^=^ eol^= %%i in ('type "%~1"') do call :y & echo.%%i
goto :eof
:x
set /a a%b%=%1,b-=-1 & exit /b
:y
set /a d=a%b%
set /a c-=-1 & if %c%==%d% echo.& set /a b-=-1 & goto y
動作文字コードは>>332の4種類とcp932とBOM付UTF-16LE
内部コマンドのtypeの文字化けの原因は不明
得体の知れないバッチが嫌ならnkfでどうぞ
@echo off & set /a b=1
for /f "delims=:" %%i in ('type "%~1" ^| findstr /n /r /c:"^$"') do call :x %%i
set /a a%b%=0,b=1,c=1
for /f delims^=^ eol^= %%i in ('type "%~1"') do call :y & echo.%%i
goto :eof
:x
set /a a%b%=%1,b-=-1 & exit /b
:y
set /a d=a%b%
set /a c-=-1 & if %c%==%d% echo.& set /a b-=-1 & goto y
動作文字コードは>>332の4種類とcp932とBOM付UTF-16LE
内部コマンドのtypeの文字化けの原因は不明
得体の知れないバッチが嫌ならnkfでどうぞ
336332
2019/07/23(火) 19:39:52.27ID:3qcsVE62337デフォルトの名無しさん
2019/08/05(月) 14:25:26.72ID:KhkfuoHG @ECHO OFF
FOR /L %%I IN (1,1,3) DO (
:ラベルの次に空行だと死ぬようだ
ECHO %%I
)
PAUSE
FOR /L %%I IN (1,1,3) DO (
:ラベルの次に空行だと死ぬようだ
ECHO %%I
)
PAUSE
338デフォルトの名無しさん
2019/08/05(月) 23:40:50.69ID:uv4O1i4q339デフォルトの名無しさん
2019/08/09(金) 07:12:05.83ID:e+IGCa9q MSはpowershell作っといてcmdも生殺しのまま
340デフォルトの名無しさん
2019/08/09(金) 07:24:42.21ID:i8+nUA9v 後方互換レガシー用だから
341デフォルトの名無しさん
2019/08/10(土) 16:26:14.51ID:O+qo9jJ2 ・ループはなるべくラベルgotoで作る
・処理はまとめてCALLで呼び出す
と変な仕様に悩まされなくて済む
・処理はまとめてCALLで呼び出す
と変な仕様に悩まされなくて済む
342デフォルトの名無しさん
2019/08/12(月) 01:15:40.10ID:qDWW1IB8343デフォルトの名無しさん
2019/08/12(月) 01:43:33.99ID:asx4qCxc344デフォルトの名無しさん
2019/08/14(水) 08:17:57.87ID:2+7gdzMY なぜエラー?
@echo off
for /l %%i in (1,1,3) do (^
echo %%i
)
pause
@echo off
for /l %%i in (1,1,3) do (^
echo %%i
)
pause
345デフォルトの名無しさん
2019/08/14(水) 12:07:08.56ID:tEu06J9P 空白行があるのがまずいのです。
346デフォルトの名無しさん
2019/08/15(木) 07:26:44.38ID:mKbuBo/x echo onで見るとechoが消えてる
for /L %i in (1 1 3) do (%i)
for /L %i in (1 1 3) do (%i)
347デフォルトの名無しさん
2019/08/15(木) 07:36:02.85ID:mKbuBo/x 今、気付いたけど
for/Lのカウントの区切り文字は半角スペースでもいいんだな
for/Lのカウントの区切り文字は半角スペースでもいいんだな
348デフォルトの名無しさん
2019/08/15(木) 12:44:36.23ID:ALsBqyPd なんで"("のあとでエスケープしてるんだ?
349デフォルトの名無しさん
2019/08/15(木) 18:55:50.85ID:8DKeAJZl350デフォルトの名無しさん
2019/08/15(木) 18:58:32.85ID:8DKeAJZl こうかも。
違いはechoの前の半角スペースの有無
@echo off
for /l %%i in (1,1,3) do (^
^
echo %%i
)
pause
違いはechoの前の半角スペースの有無
@echo off
for /l %%i in (1,1,3) do (^
^
echo %%i
)
pause
351デフォルトの名無しさん
2019/08/15(木) 20:14:09.75ID:bAdklReO352デフォルトの名無しさん
2019/08/15(木) 20:20:13.66ID:hL4sD0l+ >>349
そういうことじゃなく、
そんなところにエスケープさえしなければ動く、ということ
空改行があっても同じ
@echo off
for /l %%i in (1,1,3) do (
echo %%i
)
pause
そもそも、エスケープが必要なのは以下のような書き方の場合
@echo off
for /l %%i in (1,1,3) ^
do (
echo %%i
)
pause
そういうことじゃなく、
そんなところにエスケープさえしなければ動く、ということ
空改行があっても同じ
@echo off
for /l %%i in (1,1,3) do (
echo %%i
)
pause
そもそも、エスケープが必要なのは以下のような書き方の場合
@echo off
for /l %%i in (1,1,3) ^
do (
echo %%i
)
pause
353デフォルトの名無しさん
2019/08/16(金) 13:12:21.88ID:nbkgz595 元々^が要らんのは分かるが
何で2行下のechoが消えるんだ?
何で2行下のechoが消えるんだ?
354デフォルトの名無しさん
2019/08/16(金) 19:53:07.91ID:tgbth6lv 何が正解か良く分からないけど「echo」が消えているのではなく
「echo %%i」が実行された結果「%i」って文字列が出力されて
いるんじゃないかな
「echo %%i」が実行された結果「%i」って文字列が出力されて
いるんじゃないかな
355デフォルトの名無しさん
2019/08/17(土) 03:04:11.02ID:loMKkBUO うん、メッセージを出したかったら、
echo [メッセ−ジ文]
だよね。
echo [メッセ−ジ文]
だよね。
356デフォルトの名無しさん
2019/08/17(土) 07:25:02.72ID:u1p0gnkJ >>346を見ろ
357332
2019/08/17(土) 18:15:26.70ID:etNorZr1 はろー♪
@echo off
(^
rem echo Hello, World!)
pause
@echo off
(^
rem echo Hello, World!)
pause
358デフォルトの名無しさん
2019/08/17(土) 21:41:43.17ID:nWccZbx0359デフォルトの名無しさん
2019/08/17(土) 23:29:25.24ID:u1p0gnkJ >>357
そういうのはもういいから
そういうのはもういいから
360デフォルトの名無しさん
2019/08/20(火) 20:01:18.85ID:S2+8M2EA C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache
にIEのキャッシュファイルがあって、コマンドで削除したいのですが
del /f /q C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache\*
を管理者権限のコマンドプロンプトで実行しても消えてくれません。
どうすれば消せるのでしょうか?
環境はWin10です。
ちなみに上記の「del /f /q」を「dir」に変えて実行すると、何もファイルが表示されませんでした。
エクスプローラでは表示されるのに…
にIEのキャッシュファイルがあって、コマンドで削除したいのですが
del /f /q C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache\*
を管理者権限のコマンドプロンプトで実行しても消えてくれません。
どうすれば消せるのでしょうか?
環境はWin10です。
ちなみに上記の「del /f /q」を「dir」に変えて実行すると、何もファイルが表示されませんでした。
エクスプローラでは表示されるのに…
361デフォルトの名無しさん
2019/08/20(火) 20:06:19.31ID:WpfDQiIq まずは対象ファイルの属性を確認かな
362デフォルトの名無しさん
2019/08/20(火) 20:39:45.13ID:WpfDQiIq363デフォルトの名無しさん
2019/08/30(金) 17:07:15.01ID:C82bQLaF 任意のテキストファイルの各行(1〜N)を、
変数のARRAY[1〜N]にそのまま代入できますか?
テキストは空行あり、文字化けは無しで。
変数のARRAY[1〜N]にそのまま代入できますか?
テキストは空行あり、文字化けは無しで。
364デフォルトの名無しさん
2019/08/30(金) 18:13:13.64ID:C82bQLaF すみません
N行は指定じゃなくて全行です
N行は指定じゃなくて全行です
365デフォルトの名無しさん
2019/08/30(金) 19:43:28.54ID:hATE1ff9 >>363 確認の表示が不要なら消してくれ
@echo off & set /A N=0 & if "%~1"==":GETS" goto GETS
for /F "delims=" %%I in ('call "%~0" ":GETS" "%~1"') do (
set /A N+=1 & set %%I)
setlocal enabledelayedexpansion
for /L %%I in (1,1,%N%) do echo ARRAY[%%I]=!ARRAY[%%I]!
goto :eof
:GETS
set o="tokens=* delims=0123456789"
for /F %o% %%I in ('findstr /N "^" "%~2"') do (
set /A N+=1 & set s=%%I
setlocal enabledelayedexpansion
echo ARRAY[!N!]=!s:~1!
endlocal)
@echo off & set /A N=0 & if "%~1"==":GETS" goto GETS
for /F "delims=" %%I in ('call "%~0" ":GETS" "%~1"') do (
set /A N+=1 & set %%I)
setlocal enabledelayedexpansion
for /L %%I in (1,1,%N%) do echo ARRAY[%%I]=!ARRAY[%%I]!
goto :eof
:GETS
set o="tokens=* delims=0123456789"
for /F %o% %%I in ('findstr /N "^" "%~2"') do (
set /A N+=1 & set s=%%I
setlocal enabledelayedexpansion
echo ARRAY[!N!]=!s:~1!
endlocal)
366デフォルトの名無しさん
2019/08/30(金) 20:46:06.08ID:C82bQLaF367デフォルトの名無しさん
2019/08/31(土) 00:24:30.62ID:dLbvCDhA 発見
call は遅い
自バッチ内であっても繰り返しの中では使わないほうがよい
call は遅い
自バッチ内であっても繰り返しの中では使わないほうがよい
368デフォルトの名無しさん
2019/08/31(土) 02:06:06.88ID:KhyCGx+x それは分かる
何かいい方法が有ったら書いてくれ
何かいい方法が有ったら書いてくれ
369デフォルトの名無しさん
2019/08/31(土) 07:34:22.10ID:KhyCGx+x ループの中では、call setも遅いな
call先はバッチが基本なので
%path%のフォルダ内にset.batが存在しないか
ループの中で毎回、無駄に検索して時間のロスに
call先はバッチが基本なので
%path%のフォルダ内にset.batが存在しないか
ループの中で毎回、無駄に検索して時間のロスに
370デフォルトの名無しさん
2019/08/31(土) 13:05:56.96ID:4qIvp+ND フルパスか相対パスで書けばいいのに
371デフォルトの名無しさん
2019/08/31(土) 15:06:36.69ID:ny+pXiR9 クリーンに再実装しようとしてもうまく行かないし、Windows Terminalのオプソ化に期待
372デフォルトの名無しさん
2019/08/31(土) 21:47:05.78ID:KhyCGx+x 内部コマンドsetにフルパス?
373デフォルトの名無しさん
2019/09/17(火) 21:00:42.57ID:Syn6UaDZ ポータブルデバイスにフォルダ移動したいのですがどのコマンドを使えばよろしいのでしょうか?
宜しくお願いします。
宜しくお願いします。
374デフォルトの名無しさん
2019/09/18(水) 07:27:23.31ID:zCU+H1xg robocopy
375デフォルトの名無しさん
2019/09/18(水) 22:10:15.94ID:zS9nLp3S376デフォルトの名無しさん
2019/09/19(木) 17:48:14.75ID:W0BHkkEI そのポータブルデバイスとやらのスレで聞け
377デフォルトの名無しさん
2019/09/19(木) 19:33:15.60ID:UaiZGsoz >>373
MTP接続しているデバイスにbatでフォルダ移動したいということ?
MTP接続しているデバイスにbatでフォルダ移動したいということ?
378デフォルトの名無しさん
2019/09/19(木) 21:49:07.77ID:oZTJ7ty8379デフォルトの名無しさん
2019/09/20(金) 18:54:32.90ID:YblgUZDU >>378
MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という
仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな
COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと
無理みたいだけど
MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という
仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな
COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと
無理みたいだけど
380デフォルトの名無しさん
2019/09/20(金) 20:53:45.43ID:C2+cwByF >>379
なるほどコマンドだけでは出来ないのですね。ありがとうございました。
なるほどコマンドだけでは出来ないのですね。ありがとうございました。
381デフォルトの名無しさん
2019/09/20(金) 21:22:16.17ID:CafmkPOq mtpじゃなくftp使えばいいんじゃない
382デフォルトの名無しさん
2019/09/20(金) 23:15:32.97ID:Va/jwPXC スレチだけど、横から失礼。
今USBで繋いだスマホのファイルをPCのexplorerで見てたら、
どうしても表示されないファイルが一部あるんだよ。
表示を更新してもダメだ。何なんだろ、これ。
スマホ側でzipに圧縮したら転送できたんだが。
今USBで繋いだスマホのファイルをPCのexplorerで見てたら、
どうしても表示されないファイルが一部あるんだよ。
表示を更新してもダメだ。何なんだろ、これ。
スマホ側でzipに圧縮したら転送できたんだが。
383デフォルトの名無しさん
2019/09/21(土) 09:52:34.32ID:obXFPJy6 >>382
MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど
それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい
でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示
できないってのは覚えがないのでスマホ側の実装の問題じゃないかな
MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど
それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい
でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示
できないってのは覚えがないのでスマホ側の実装の問題じゃないかな
384デフォルトの名無しさん
2019/09/21(土) 11:24:33.96ID:aqL81KxG385デフォルトの名無しさん
2019/09/21(土) 12:19:59.86ID:Zmbs8cMB >>382
メディアストレージのDBが壊れてるか更新されてないだけでは?
メディアストレージのDBが壊れてるか更新されてないだけでは?
386デフォルトの名無しさん
2019/09/21(土) 12:39:19.92ID:aqL81KxG387デフォルトの名無しさん
2019/09/21(土) 23:40:04.00ID:bVn3Z6J/ >>378
Android Debug Bridge(adb)を使用してはどうでしょうか?
https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles
例)adb pull remote local
ただしワイルドカードが使用できないので工夫が必要かも
Android Debug Bridge(adb)を使用してはどうでしょうか?
https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles
例)adb pull remote local
ただしワイルドカードが使用できないので工夫が必要かも
388デフォルトの名無しさん
2019/09/22(日) 06:16:16.89ID:9I7oEjtC そもそもAndroidなのか?
389デフォルトの名無しさん
2019/09/23(月) 04:39:39.37ID:LINEF6Ks390デフォルトの名無しさん
2019/10/01(火) 22:20:01.40ID:vtcCH4Ws vbsスクリプト使用者に対話型でURLを入力させようと思い
inputboxを使用していましたが254文字以降は切り捨てられるようで
切り捨てられた場合にcmdを呼んでコマンドプロンプトで
TYPE CONで入力させ標準出力からとろうと思いました。
コマンドプロンプトから
TYPE CON
で文字入力していくと510文字しか打てません
COPY CON
で文字入力していく場合も510文字しか打てません
ただこちらは改行して2回目以降の文字入力は254文字までしか打てません
コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど
TYPE COPYコマンドが原因なのでしょうか?
上限が512-2 256-2なのが気になります
inputboxを使用していましたが254文字以降は切り捨てられるようで
切り捨てられた場合にcmdを呼んでコマンドプロンプトで
TYPE CONで入力させ標準出力からとろうと思いました。
コマンドプロンプトから
TYPE CON
で文字入力していくと510文字しか打てません
COPY CON
で文字入力していく場合も510文字しか打てません
ただこちらは改行して2回目以降の文字入力は254文字までしか打てません
コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど
TYPE COPYコマンドが原因なのでしょうか?
上限が512-2 256-2なのが気になります
391デフォルトの名無しさん
2019/10/01(火) 22:57:55.77ID:co/wCjS7392デフォルトの名無しさん
2019/10/01(火) 23:08:42.31ID:vtcCH4Ws393デフォルトの名無しさん
2019/10/01(火) 23:19:31.66ID:co/wCjS7 標準出力がいいなら
echo %var%
を最後に付けとけばうまくいかないかな?
echo %var%
を最後に付けとけばうまくいかないかな?
394デフォルトの名無しさん
2019/10/01(火) 23:41:17.62ID:vtcCH4Ws いえVBSで環境変数からでも取れるんでどちらでもいいんですが
この方法は毎回ファイル書き込みはいるのなら避けたいですね
この方法は毎回ファイル書き込みはいるのなら避けたいですね
395デフォルトの名無しさん
2019/10/03(木) 06:03:26.81ID:qiM7wE73396デフォルトの名無しさん
2019/10/03(木) 19:45:19.23ID:+nOn2TPH >>395
ありがとうございます。たしかにfindstr ^^ 試すと長く入力できますね
ただスクリプトが動く動きません(type con copy con以外)
たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします
//Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
ありがとうございます。たしかにfindstr ^^ 試すと長く入力できますね
ただスクリプトが動く動きません(type con copy con以外)
たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします
//Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
397デフォルトの名無しさん
2019/10/03(木) 20:43:23.90ID:jymbX9V4 cmdじゃないけど
powershell -Command $a=read-host; write-host $a
とかどうよ
powershell -Command $a=read-host; write-host $a
とかどうよ
398デフォルトの名無しさん
2019/10/03(木) 21:20:07.70ID:+nOn2TPH powershellもちょっと試してたんですけどこっちもキーボード入力がはいってるように見えないです
powershellはcommand移行の注釈がいまいちわからなくてそれが原因なのかなとも思ったんですけど
(""の場合は前に&をつけるとかどうとか)
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Set oExec = WshShell.exec("powershell -NoExit -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command $a=read-host; write-host $a")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
powershellはcommand移行の注釈がいまいちわからなくてそれが原因なのかなとも思ったんですけど
(""の場合は前に&をつけるとかどうとか)
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Set oExec = WshShell.exec("powershell -NoExit -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command $a=read-host; write-host $a")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
399デフォルトの名無しさん
2019/10/04(金) 05:33:06.84ID:igWxDR2f >>398
いまいちVB.NETがどういう環境で使えるのか分からないし
PowerShellの実行を許可してない環境でも動くのかも分からないが
VB.NETのinputboxには256文字の入力制限が無い模様
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("powershell -NoProfile -ExecutionPolicy Unrestricted -C add-type -AssemblyName microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('URLを入力してください', 'URL入力');")
Prompt = oExec.stdout.ReadLine()
End Function
'msgbox Prompt("test dayo","")
WScript.Echo Prompt("test dayo","")
いまいちVB.NETがどういう環境で使えるのか分からないし
PowerShellの実行を許可してない環境でも動くのかも分からないが
VB.NETのinputboxには256文字の入力制限が無い模様
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("powershell -NoProfile -ExecutionPolicy Unrestricted -C add-type -AssemblyName microsoft.VisualBasic; [Microsoft.VisualBasic.Interaction]::InputBox('URLを入力してください', 'URL入力');")
Prompt = oExec.stdout.ReadLine()
End Function
'msgbox Prompt("test dayo","")
WScript.Echo Prompt("test dayo","")
400デフォルトの名無しさん
2019/10/04(金) 06:57:13.54ID:2Xve1BBy >>396
良く分からんが、こんなのでどうですかね?
-------foo.bat
@findstr ^^ < con
-------Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("foo.bat")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
良く分からんが、こんなのでどうですかね?
-------foo.bat
@findstr ^^ < con
-------Prompt.vbs
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("foo.bat")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo","")
401デフォルトの名無しさん
2019/10/04(金) 08:44:14.07ID:2Xve1BBy バッチ不要だな
Set oExec = WshShell.exec("cmd /c findstr /R . < con")
最後に1023文字しか表示されないなReadLineのせいか?
Set oExec = WshShell.exec("cmd /c findstr /R . < con")
最後に1023文字しか表示されないなReadLineのせいか?
402デフォルトの名無しさん
2019/10/04(金) 12:18:00.19ID:mgLzdBVB ありがとうございます
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
Set oExec = WshShell.exec("cmd /c cmd /c findstr /R . < con")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox LEN(Prompt("test dayo",""))
でやると8190でるのでmsgboxの表示制限っぽいです
上限が512から8190まで増えました♪
Function Prompt(Text,Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,""),vbLf,"") & " && type con")
Set oExec = WshShell.exec("cmd /c cmd /c findstr /R . < con")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox LEN(Prompt("test dayo",""))
でやると8190でるのでmsgboxの表示制限っぽいです
上限が512から8190まで増えました♪
403デフォルトの名無しさん
2019/10/04(金) 12:44:51.20ID:2Xve1BBy それは良かった
ところで cmd /c cmd /c と2重になってるのは何か意味が?
ところで cmd /c cmd /c と2重になってるのは何か意味が?
404デフォルトの名無しさん
2019/10/04(金) 12:49:02.43ID:mgLzdBVB 単なるミスですw
405デフォルトの名無しさん
2019/10/04(金) 20:33:36.96ID:igWxDR2f >>402
HTAで作るって方向は無いのかな?
WScriptオブジェクトは使えないけど、IEと違ってローカル処理はできるよ
全部HTAにするのが面倒ならUI部分をHTAで作って
そこから、各々vbsを起動するようにするとか
サンプル http://www.42ch.net/UploaderSmall/source/1570156236.zip
HTAで作るって方向は無いのかな?
WScriptオブジェクトは使えないけど、IEと違ってローカル処理はできるよ
全部HTAにするのが面倒ならUI部分をHTAで作って
そこから、各々vbsを起動するようにするとか
サンプル http://www.42ch.net/UploaderSmall/source/1570156236.zip
406デフォルトの名無しさん
2019/10/05(土) 07:49:09.72ID:XliNsfqD ありがとうございます
HTAも便利そうですね
アドレスバー,リンクをドラッグドロップで取り込めるのがいいなと
HTAも便利そうですね
アドレスバー,リンクをドラッグドロップで取り込めるのがいいなと
407デフォルトの名無しさん
2019/10/07(月) 16:39:36.79ID:/M5l0Sli そういやHTAはHighDPI対応してないのかな
サーフェスで苦労した覚えが
サーフェスで苦労した覚えが
408デフォルトの名無しさん
2019/10/09(水) 19:08:15.06ID:tUBbtl1D 文字列の画面表示の桁数はバッチで取得できますか?
半角1で全角2での合計みたいな
半角1で全角2での合計みたいな
409デフォルトの名無しさん
2019/10/10(木) 19:46:16.73ID:NVkes/cJ >>408
@echo off & if "%~1"=="1" goto x
set c=call "%~0" 1 ^^^| findstr /o /r .*
set o="skip=1 delims=:" & set /p s=文字列=
for /f %o% %%i in ('%c%') do set /a b=%%i-2
echo 桁数= %b% & pause & goto :eof
:x
setlocal enabledelayedexpansion
echo.!s!
echo.
入力はシフトJISで表示できる文字のみです。
CP932で正常に動作します。たぶん。
@echo off & if "%~1"=="1" goto x
set c=call "%~0" 1 ^^^| findstr /o /r .*
set o="skip=1 delims=:" & set /p s=文字列=
for /f %o% %%i in ('%c%') do set /a b=%%i-2
echo 桁数= %b% & pause & goto :eof
:x
setlocal enabledelayedexpansion
echo.!s!
echo.
入力はシフトJISで表示できる文字のみです。
CP932で正常に動作します。たぶん。
410デフォルトの名無しさん
2019/10/10(木) 23:42:47.50ID:T8I5o9Ey mode con かも
411デフォルトの名無しさん
2019/10/11(金) 07:29:52.81ID:D9aa0x5a412デフォルトの名無しさん
2019/10/18(金) 19:14:42.75ID:MUFbi2Ng 特定の2つのフォルダ内を一括削除するbatの作り方がわかりません…。
1つだけならば出来るのですが2つ指定するにはどうすればいいのでしょうか
お願いします
1つだけならば出来るのですが2つ指定するにはどうすればいいのでしょうか
お願いします
413デフォルトの名無しさん
2019/10/18(金) 19:26:30.68ID:sHZx2IDB 1行目にAフォルダを削除
次の行にBフォルダを削除でいいんじゃないの?
1行に書きたければ
複数のコマンドを続けて実行する
https://www.adminweb.jp/command/action/index1.html
次の行にBフォルダを削除でいいんじゃないの?
1行に書きたければ
複数のコマンドを続けて実行する
https://www.adminweb.jp/command/action/index1.html
414デフォルトの名無しさん
2019/10/18(金) 19:28:12.11ID:DNcfAKqA 2回やるbatを作ればいいのでは?
415デフォルトの名無しさん
2019/10/18(金) 19:29:32.93ID:DNcfAKqA あ、かぶってしまった
416デフォルトの名無しさん
2019/10/18(金) 22:56:14.67ID:ZkRket+3 for %%I in ( C:\AAA C:\BBB ) do del /Q %%I\*.*
417デフォルトの名無しさん
2019/10/18(金) 23:57:13.31ID:uNKAmOCu for /f %%i in ('dir /b^|find "foo"') do pause
fooが無かった場合pauseしてくれないのですが解決策ありませんか?
実際はfooの有無で分岐させるのですがとりあえずpauseで書いてます
fooが無かった場合pauseしてくれないのですが解決策ありませんか?
実際はfooの有無で分岐させるのですがとりあえずpauseで書いてます
418デフォルトの名無しさん
2019/10/19(土) 00:21:50.04ID:nJ40H8MU >>417
(for /f %%i in ('dir /b^|find "foo"') do pause) || pause
(for /f %%i in ('dir /b^|find "foo"') do pause) || pause
419デフォルトの名無しさん
2019/10/19(土) 00:29:35.02ID:lUUAms6Y >>418
ありがとう、できたらfor内で分岐したい…
ありがとう、できたらfor内で分岐したい…
420デフォルトの名無しさん
2019/10/19(土) 00:34:28.69ID:nJ40H8MU forのループは条件が一致しないとすり抜けて
1回も通らないで次のステートメントにいっちゃうから無理
無理矢理やろうとすると、ダミー項目を与えて必ず一度はforループを実行するようにして
その中でダミー項目だったら〜と条件判定することになる
1回も通らないで次のステートメントにいっちゃうから無理
無理矢理やろうとすると、ダミー項目を与えて必ず一度はforループを実行するようにして
その中でダミー項目だったら〜と条件判定することになる
421デフォルトの名無しさん
2019/10/19(土) 00:43:02.67ID:nJ40H8MU こんな感じ
for /f %%i in ('dir /b^|find "foo"^|^|echo none') do (if "%%i" equ "none" echo ありません)
for /f %%i in ('dir /b^|find "foo"^|^|echo none') do (if "%%i" equ "none" echo ありません)
422デフォルトの名無しさん
2019/10/19(土) 00:49:42.45ID:nJ40H8MU 俺としては>>418の方が見やすくて間違いが少なくて済むと思う
423デフォルトの名無しさん
2019/10/19(土) 01:05:43.14ID:lUUAms6Y なるほど||つかう手もあるんですね
for入れ子にしてるから||でいきますありがとう
for入れ子にしてるから||でいきますありがとう
424デフォルトの名無しさん
2019/10/19(土) 01:26:01.92ID:nJ40H8MU forの後で、%errorlevel%で判断できるかと思ったけど
forのコマンドは子タスクで実行されるから環境を親タスクに引き継がないんだね
こういうことはパイプの右側でも起きるけど
forのコマンドは子タスクで実行されるから環境を親タスクに引き継がないんだね
こういうことはパイプの右側でも起きるけど
425デフォルトの名無しさん
2019/10/19(土) 07:15:14.93ID:azMLqhGk for /f "delims=" %%i in ('dir/b *foo* 2^>nul ^|^| echo *') do (
if "%%~i"=="*" (echo ないよ) else echo %%i
)
if "%%~i"=="*" (echo ないよ) else echo %%i
)
426デフォルトの名無しさん
2019/10/20(日) 07:21:20.34ID:bUbbfXYV for /f "delims=" %%i in ('"dir/b *foo* 2>&1"') do if not exist %%i echo %%i
427デフォルトの名無しさん
2019/10/21(月) 18:09:26.80ID:8RixcIVS なんか古代呪文を撃ちあってるみたい(^_^;)
428デフォルトの名無しさん
2019/10/21(月) 21:05:31.60ID:Sv6Oxatw そう、実は、古代語魔術(ハイエンシェント)を打ち合っているのです。
スレ違いだけれど、
魔法の使い方
https://eman-physics.net/columns/magic.html
を、思い出した。
スレ違いだけれど、
魔法の使い方
https://eman-physics.net/columns/magic.html
を、思い出した。
429デフォルトの名無しさん
2019/10/21(月) 22:05:11.02ID:nEQALG6h ザイログニーモニックは忘れた
430デフォルトの名無しさん
2019/10/22(火) 23:09:34.31ID:jiuE9ZBi 詠唱せよ
431デフォルトの名無しさん
2019/10/27(日) 14:29:49.16ID:Lik42TLZ cmd.exe /c start ってネットワークドライブのファイル開けないんでしたっけ?
cmd.exe /c start t:\test.txt ってやると
アクセスが拒否されました。って表示される。c:\以下なら大丈夫
cmd.exe /c start file:\\t:\test.txt ってやれば開けるからいいんだけど
cmd.exe /c start t:\test.txt ってやると
アクセスが拒否されました。って表示される。c:\以下なら大丈夫
cmd.exe /c start file:\\t:\test.txt ってやれば開けるからいいんだけど
432デフォルトの名無しさん
2019/10/27(日) 19:40:17.02ID:n+Gkmfbl cmd /c start t:\test.txt
と
start t:\test.txt
の違いは?
と
start t:\test.txt
の違いは?
433デフォルトの名無しさん
2019/10/27(日) 19:45:47.81ID:QHyOIS3t startが内部コマンド
434デフォルトの名無しさん
2019/10/27(日) 19:54:44.57ID:n+Gkmfbl なんで cmd /c が必要?
435デフォルトの名無しさん
2019/10/27(日) 22:46:50.23ID:8uvk7ayg >>434
ぐぐれかす
ぐぐれかす
436蟻人間 ◆T6xkBnTXz7B0
2019/10/27(日) 23:17:38.75ID:cNZwDfUU437デフォルトの名無しさん
2019/10/28(月) 01:22:07.40ID:YqbFbBrf >>434
バッチでは cmd /c は不要ですね。
cmd /c があれば子プロセスになります。
どっちも結果は同じ。エディタが起動します。
「ファイル名を指定して実行」の入力なら、
cmd /c start は不要かと思います。
でも、あっても間違いではないです。
バッチでは cmd /c は不要ですね。
cmd /c があれば子プロセスになります。
どっちも結果は同じ。エディタが起動します。
「ファイル名を指定して実行」の入力なら、
cmd /c start は不要かと思います。
でも、あっても間違いではないです。
438デフォルトの名無しさん
2019/10/28(月) 02:10:13.65ID:t0sY5Haq そんなこと聞いてないから、>>431に答えてくれ
439438
2019/10/28(月) 02:18:17.09ID:bqlyCkZ6 ネットワークフォルダをドライブに割り当てた問題かと思えば
関係なさそうだ。でも不思議だ
cmd.exe /c start \\server\folder だとフォルダが開ける
cmd.exe /c start \\server\folder\subfolder でも問題ない
cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される
でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける
関係なさそうだ。でも不思議だ
cmd.exe /c start \\server\folder だとフォルダが開ける
cmd.exe /c start \\server\folder\subfolder でも問題ない
cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される
でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける
440デフォルトの名無しさん
2019/10/28(月) 03:05:07.76ID:ML+fUsJB 管理者権限でやってみては?
441438
2019/10/28(月) 03:54:57.58ID:bqlyCkZ6 アクセスが拒否されました
442デフォルトの名無しさん
2019/10/28(月) 07:04:53.54ID:YqbFbBrf >>438 すみません。私には分かりません。
cmd/c を省略、 さらに start を省略しても同じアクセス拒否ですか?
cmd/c を省略、 さらに start を省略しても同じアクセス拒否ですか?
443デフォルトの名無しさん
2019/10/28(月) 08:16:04.60ID:kjzN6NI8 >>439
>cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される
>でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける
このコマンドには、メモ帳を起動すると書いていないから、起動できないだろ
拡張子から、起動するアプリを取得できないだろ?
そういう情報は、レジストリに入っているから、
バッチファイルから、そこへアクセスできるか?
>cmd.exe /c start \\server\folder\test.txt だとアクセスが拒否される
>でもエクスプローラーのアドレスバーに ↑ を入れるとメモ帳で開ける
このコマンドには、メモ帳を起動すると書いていないから、起動できないだろ
拡張子から、起動するアプリを取得できないだろ?
そういう情報は、レジストリに入っているから、
バッチファイルから、そこへアクセスできるか?
444443
2019/10/28(月) 08:20:10.88ID:kjzN6NI8 普通に「notepad パス付きファイル名」なら、起動できるだろ?
445デフォルトの名無しさん
2019/10/29(火) 07:53:25.61ID:SHkVBveq >>439
エクスプローラーのバーに書くのも cmd/c start は要らんぞ
エクスプローラーのバーに書くのも cmd/c start は要らんぞ
446デフォルトの名無しさん
2019/10/29(火) 11:55:42.58ID:w4Uxvw1j >>443
バッチからでも関連付け起動できるぞ
バッチからでも関連付け起動できるぞ
447デフォルトの名無しさん
2019/10/29(火) 12:51:26.56ID:SHkVBveq448デフォルトの名無しさん
2019/10/29(火) 12:53:59.00ID:SHkVBveq ああ1行目にゴミが付いたw 無視してくれ
449デフォルトの名無しさん
2019/10/29(火) 13:09:40.06ID:YQKoC2Uo コマンドプロンプトの文字コードがよくわからん。
なんでchcp 932なのにUnicodeが表示できてるんだ?
chcpの設定とは無関係に画面はUnicodeで変換してるんか?
なんでchcp 932なのにUnicodeが表示できてるんだ?
chcpの設定とは無関係に画面はUnicodeで変換してるんか?
450デフォルトの名無しさん
2019/10/29(火) 13:26:49.20ID:SHkVBveq バッチはSJIS
リダイレクトするとSJIS
画面はユニコード
set はユニコード特有文字でも入る(cmd画面で入力なら)
cmdの内部処理はユニコード
リダイレクトするとSJIS
画面はユニコード
set はユニコード特有文字でも入る(cmd画面で入力なら)
cmdの内部処理はユニコード
451デフォルトの名無しさん
2019/10/29(火) 13:34:20.85ID:spBBwL/I Unicodeはいいが文字コードは何なんだ?
UTF-8なのか?UTF-16なのか?
UTF-8なのか?UTF-16なのか?
452デフォルトの名無しさん
2019/10/29(火) 13:37:09.01ID:SHkVBveq 16
453デフォルトの名無しさん
2019/10/29(火) 13:40:11.15ID:spBBwL/I >>452
と思うやろ?
typeコマンドは文字コード変換してるかもしれんなと思って
copy ファイル名 CON なら、そのまんま表示されるだろうと
思ってやってみたら、
UTF-8は問題なく表示されて、UTF-16は文字化けしてるんだよ。
Windows 10で仕様でも変わったんか?
と思うやろ?
typeコマンドは文字コード変換してるかもしれんなと思って
copy ファイル名 CON なら、そのまんま表示されるだろうと
思ってやってみたら、
UTF-8は問題なく表示されて、UTF-16は文字化けしてるんだよ。
Windows 10で仕様でも変わったんか?
454デフォルトの名無しさん
2019/10/29(火) 13:47:51.80ID:SHkVBveq 変わらず
後は自分で調べろ
後は自分で調べろ
455デフォルトの名無しさん
2019/10/29(火) 13:53:47.92ID:spBBwL/I わからんのかーいw
456デフォルトの名無しさん
2019/10/29(火) 14:01:37.87ID:SHkVBveq 図に乗るな
457デフォルトの名無しさん
2019/10/29(火) 14:15:50.84ID:spBBwL/I やっぱり仕様が変わってた。
Windows 7だとchcp 932の時、
copy test.txt CON で正しく表示できるのはShiftJISだけ
UTF-8でもUTF-16LEでも文字化けする。
Windows 10だと逆に、UTF-8(BOMなし)、UTF-16LEは
正しく表示できるが、ShiftJISは文字化けする。
Windows 7だとchcp 932の時、
copy test.txt CON で正しく表示できるのはShiftJISだけ
UTF-8でもUTF-16LEでも文字化けする。
Windows 10だと逆に、UTF-8(BOMなし)、UTF-16LEは
正しく表示できるが、ShiftJISは文字化けする。
458デフォルトの名無しさん
2019/10/29(火) 14:23:41.56ID:SHkVBveq そうなのか
でも内部が16だと思うが
分からん
でも内部が16だと思うが
分からん
459デフォルトの名無しさん
2019/10/29(火) 14:27:54.02ID:spBBwL/I Windows 7でもdirコマンドでShiftJISにない文字は表示できてるから
最終的にはUnicodeなんだろう(おそらくUTF16だと思うが)
その途中になんかあるんだろうな。
Windows 10でcopy CONつかってるのに、UTF-8とUTF-16の両方が
文字化けしないのが不思議だ・・・って思ったら、
あれ?UTF-16文字化けしてた。んん?間違ってtypeで表示してたか。
これなら理解できる。
最終的にはUnicodeなんだろう(おそらくUTF16だと思うが)
その途中になんかあるんだろうな。
Windows 10でcopy CONつかってるのに、UTF-8とUTF-16の両方が
文字化けしないのが不思議だ・・・って思ったら、
あれ?UTF-16文字化けしてた。んん?間違ってtypeで表示してたか。
これなら理解できる。
460デフォルトの名無しさん
2019/10/29(火) 14:44:03.37ID:XkpxJQc3 >>457
いつのWindows10だね?
いつのWindows10だね?
461デフォルトの名無しさん
2019/10/29(火) 14:52:33.20ID:spBBwL/I >>460
今の最新の公式リリース
今の最新の公式リリース
462デフォルトの名無しさん
2019/10/29(火) 14:56:43.68ID:spBBwL/I なんかわかりづらくなったので再掲
copy test.txt CONで検証
Windows7、chcp 932・・・text.txt が ShiftJIS だと正しく表示される
Windows10、chcp 932・・・text.txt が UTF-8(BOMなし) だと正しく表示される
copy test.txt CONで検証
Windows7、chcp 932・・・text.txt が ShiftJIS だと正しく表示される
Windows10、chcp 932・・・text.txt が UTF-8(BOMなし) だと正しく表示される
463デフォルトの名無しさん
2019/10/29(火) 16:52:33.42ID:spBBwL/I なんかいろいろ勘違いしてたっぽい
copy CONつかってもどこかの誰かが変換かましてるっぽい
こんな漢字でバイナリ直接吐き出したら、chcp 932ではSJISしか正しく表示されなかった。
chcp 65001にしたらUTF8だけ
Windows 10でだけど、たぶんWindows 7でも同じじゃないかな?
#include <iostream>
int main()
{
unsigned char str[] = { 0xE6, 0xBC, 0xA2, 0xE5, 0xAD, 0x97, 0xE2, 0x9D, 0xA4 };
std::cout.write((char*)&str, sizeof(str));
}
copy CONつかってもどこかの誰かが変換かましてるっぽい
こんな漢字でバイナリ直接吐き出したら、chcp 932ではSJISしか正しく表示されなかった。
chcp 65001にしたらUTF8だけ
Windows 10でだけど、たぶんWindows 7でも同じじゃないかな?
#include <iostream>
int main()
{
unsigned char str[] = { 0xE6, 0xBC, 0xA2, 0xE5, 0xAD, 0x97, 0xE2, 0x9D, 0xA4 };
std::cout.write((char*)&str, sizeof(str));
}
464デフォルトの名無しさん
2019/10/29(火) 17:46:22.44ID:4a4kNF+Q 一つわかった気がする。
コマンドプロンプトはUnicode対応してるけどバッチファイルはUnicode対応じゃないんだ。
(正確にはchcp 65001を実行すれば、UTF-8のバッチファイルを実行できる)
だからchcp 932のままコマンドプロンプトでUnicode文字を使うことができるけど
バッチファイルにするとそれができない。
コマンドプロンプトはUnicode対応してるけどバッチファイルはUnicode対応じゃないんだ。
(正確にはchcp 65001を実行すれば、UTF-8のバッチファイルを実行できる)
だからchcp 932のままコマンドプロンプトでUnicode文字を使うことができるけど
バッチファイルにするとそれができない。
465デフォルトの名無しさん
2019/10/29(火) 17:46:59.43ID:wQOUEDyj テキストストリームだけしか通さないから何らかの変換が入ってるのかも知れないね
copy /b hoge.txt con
指定されたデバイスに書き込めません。
0 個のファイルをコピーしました。
copy /b hoge.txt con
指定されたデバイスに書き込めません。
0 個のファイルをコピーしました。
466デフォルトの名無しさん
2019/10/29(火) 18:03:33.66ID:4a4kNF+Q あ、copyに/bオプションなんてあったのか・・・
467デフォルトの名無しさん
2019/10/29(火) 18:10:48.74ID:4a4kNF+Q そんな馬鹿な・・・。Windows 10でもShiftJISじゃないと表示されなくなっただと?
何度も確認したはずだぞ???
何度も確認したはずだぞ???
468デフォルトの名無しさん
2019/10/29(火) 18:37:30.30ID:tLCpEMn0 Windows10については徐々に更新されているらしい
Windows Command-Line: Unicode and UTF-8 Output Text Buffer
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/
Windows Command-Line: Unicode and UTF-8 Output Text Buffer
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/
469デフォルトの名無しさん
2019/10/29(火) 19:04:08.72ID:SHkVBveq 少し前にここで同様の話題が有ったが UTF-8(BOM無し) のテキストは
たとえ chcp 65001 しても type で一部分文字化けする
findstr ^^ foo.txt
で正常に表示されるはず(chcp 65001 で)
たとえ chcp 65001 しても type で一部分文字化けする
findstr ^^ foo.txt
で正常に表示されるはず(chcp 65001 で)
470デフォルトの名無しさん
2019/10/29(火) 19:08:30.96ID:SHkVBveq あと chcp 65001 しても UTF-8 のバッチは
正常に動作しないと思った方がいい
正常に動作しないと思った方がいい
471デフォルトの名無しさん
2019/10/29(火) 20:31:39.34ID:ltL5L5Cn あぁ、クソ。意味がわからんけど、理由がわかった。
1. まず、utf8.txt の中身をUTF-8で作る。ShiftJISにない文字も入れておく。
2. chcp を実行。「現在のコード ページ: 932」と表示されることを確認する。
3. コマンドプロンプトを起動して、type utf8.txt にして文字化けすることを確認する
ここまではなんの変哲もない。
4. powershell.exe -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 を実行する
5. type utf8.txt を実行すると文字化けしない(!)
6. chcp を実行。「Active code page: 932」と表示される。932なのになぜか英語(!)
chcpを変更してもとに戻すと、元に戻るし、
powershell -Command [Console]::OutputEncoding = [Text.Encoding]::Default を実行しても元に戻る
子プロセスであるはずのpowershellがなにかコマンドプロンプトの状態を変えてやがる。
なんだこれ?コマンドプロンプトに英語モードとかあったっけ?
1. まず、utf8.txt の中身をUTF-8で作る。ShiftJISにない文字も入れておく。
2. chcp を実行。「現在のコード ページ: 932」と表示されることを確認する。
3. コマンドプロンプトを起動して、type utf8.txt にして文字化けすることを確認する
ここまではなんの変哲もない。
4. powershell.exe -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 を実行する
5. type utf8.txt を実行すると文字化けしない(!)
6. chcp を実行。「Active code page: 932」と表示される。932なのになぜか英語(!)
chcpを変更してもとに戻すと、元に戻るし、
powershell -Command [Console]::OutputEncoding = [Text.Encoding]::Default を実行しても元に戻る
子プロセスであるはずのpowershellがなにかコマンドプロンプトの状態を変えてやがる。
なんだこれ?コマンドプロンプトに英語モードとかあったっけ?
472デフォルトの名無しさん
2019/10/29(火) 20:34:10.83ID:ltL5L5Cn コマンドプロンプトを起動するのは2の時の間違いな
473デフォルトの名無しさん
2019/10/29(火) 20:38:52.72ID:ltL5L5Cn この話から気づくと思うけど、
powershell -Command [Console]::OutputEncoding
初期状態は、日本語 (シフト JIS)
powershell -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
これでUTF-8に変更して
powershell -Command [Console]::OutputEncoding
現在の設定を確認すると、UTF-8になってる。
chcpの値は変わらんのに、コードページを変えることができてしまっているかのようだ。
powershell -Command [Console]::OutputEncoding
初期状態は、日本語 (シフト JIS)
powershell -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
これでUTF-8に変更して
powershell -Command [Console]::OutputEncoding
現在の設定を確認すると、UTF-8になってる。
chcpの値は変わらんのに、コードページを変えることができてしまっているかのようだ。
474デフォルトの名無しさん
2019/10/29(火) 21:33:51.82ID:ltL5L5Cn Windows 7にPowerShell6をインストールしてやってみたけど、
pwsh -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 で
コードページが変わるな。Windows 7はまともに動かないので画面がバグるw
pwsh -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8 で
コードページが変わるな。Windows 7はまともに動かないので画面がバグるw
475デフォルトの名無しさん
2019/10/29(火) 21:41:58.40ID:ltL5L5Cn なるほど、SetConsoleOutputCPでコマンドプロンプトのコードページを変更できるらしい
http://tooljp.com/language/C-Languate/sample-code/SetConsoleOutputCP-sample-code.html
http://tooljp.com/language/C-Languate/sample-code/SetConsoleOutputCP-sample-code.html
476デフォルトの名無しさん
2019/10/30(水) 07:47:21.02ID:WNRoeYsC おれもコードページ弄って色々やったが上手くいかなかった
typeは一部ダメ、moreは全くダメ、findstrはリダイレクトするとダメ、
copy〜conは utf-7とjis が一部ダメ、
for〜do echoでやると空行が抜けてダメという具合
typeは一部ダメ、moreは全くダメ、findstrはリダイレクトするとダメ、
copy〜conは utf-7とjis が一部ダメ、
for〜do echoでやると空行が抜けてダメという具合
477デフォルトの名無しさん
2019/10/30(水) 08:50:12.52ID:BvOaIOcB エディタがあれば必要ない
478デフォルトの名無しさん
2019/10/30(水) 11:07:44.00ID:iT3/p0k9 >>476
なんとなく画面に表示する部分にバグがあるから
バッチファイル内で閉じて画面に表示しなければ、chcp 65001で動くような気がする。
あとWindows 10ではそこらへんが直ってるので同じように考えるのは早計
なんとなく画面に表示する部分にバグがあるから
バッチファイル内で閉じて画面に表示しなければ、chcp 65001で動くような気がする。
あとWindows 10ではそこらへんが直ってるので同じように考えるのは早計
479デフォルトの名無しさん
2019/10/30(水) 11:25:55.22ID:iT3/p0k9 Windows 7でこれが文字化けせずに動いた
chcpで画面はクリアされるが、正しく出力される。
↓UTF8 + CRLFで作成
@echo off
chcp 65001
set A=ユニコード文字
chcp 932
echo %A%
chcpで画面はクリアされるが、正しく出力される。
↓UTF8 + CRLFで作成
@echo off
chcp 65001
set A=ユニコード文字
chcp 932
echo %A%
480デフォルトの名無しさん
2019/10/30(水) 12:04:53.93ID:BvOaIOcB481デフォルトの名無しさん
2019/10/30(水) 12:11:59.20ID:n2bLSC2q chcp 65001 にしてもcmd /u で開き直さなきゃバグるんじゃない?
482デフォルトの名無しさん
2019/10/30(水) 12:17:27.39ID:4eNYSN+t chcpやってモード変更したとしても
既に開いたハンドルは開いたときのモードのままだろうからね
既に開いたハンドルは開いたときのモードのままだろうからね
483デフォルトの名無しさん
2019/10/30(水) 12:27:14.70ID:iT3/p0k9 >>480
化けると言うよりか、文字の終わりを正しく認識できてない感じ
これならうまくいく。
まずchcpをifの()内でやるとおかしくなる。
その上でsetする文字をダブルクォートでくくらなかったらおかしくなった
なのでダブルクォートくくって、出力時に外してる。
@echo off
chcp 65001
set A=
set B=
if "hoge"=="hoge" (
set A="あああ"
set B="いいい"
)
chcp 932
call :output %A% %B%
exit /b
:output
echo %~1
echo %~2
化けると言うよりか、文字の終わりを正しく認識できてない感じ
これならうまくいく。
まずchcpをifの()内でやるとおかしくなる。
その上でsetする文字をダブルクォートでくくらなかったらおかしくなった
なのでダブルクォートくくって、出力時に外してる。
@echo off
chcp 65001
set A=
set B=
if "hoge"=="hoge" (
set A="あああ"
set B="いいい"
)
chcp 932
call :output %A% %B%
exit /b
:output
echo %~1
echo %~2
484デフォルトの名無しさん
2019/10/30(水) 12:29:13.59ID:iT3/p0k9485デフォルトの名無しさん
2019/10/30(水) 12:32:44.17ID:iT3/p0k9 >>482
そうとは限らない。
chcpはどうやら内部でSetConsoleOutputCPを呼び出してるんだろうけど
SetConsoleOutputCPっていうのはConsole APIの一つで、
コマンドプロンプトのコードページを変更する。
このAPIは子プロセスから親プロセスをたどって見つけた
コンソール(コマンドプロンプト)のコードページを変更できる。
ハンドルのモードは関係なく、コンソールのコードページの話
そうとは限らない。
chcpはどうやら内部でSetConsoleOutputCPを呼び出してるんだろうけど
SetConsoleOutputCPっていうのはConsole APIの一つで、
コマンドプロンプトのコードページを変更する。
このAPIは子プロセスから親プロセスをたどって見つけた
コンソール(コマンドプロンプト)のコードページを変更できる。
ハンドルのモードは関係なく、コンソールのコードページの話
486デフォルトの名無しさん
2019/10/30(水) 12:38:00.67ID:iT3/p0k9 >>252の改良でこれならうまく動くんだよな
ダブルクォートはいるけど。
あとecho あああa みたいに最後をASCII文字にしても動く
@echo off
chcp 65001
if "hoge"=="hoge" (
echo "あああ"
echo "いいい"
)
ダブルクォートはいるけど。
あとecho あああa みたいに最後をASCII文字にしても動く
@echo off
chcp 65001
if "hoge"=="hoge" (
echo "あああ"
echo "いいい"
)
487デフォルトの名無しさん
2019/10/30(水) 12:45:45.44ID:iT3/p0k9 こうすりゃいいのかw
@echo off
chcp 65001
if "hoge"=="hoge" (
call :echo "あああ"
call :echo "いいい"
)
exit /b
:echo
echo %~1
@echo off
chcp 65001
if "hoge"=="hoge" (
call :echo "あああ"
call :echo "いいい"
)
exit /b
:echo
echo %~1
488デフォルトの名無しさん
2019/10/30(水) 12:46:49.70ID:iT3/p0k9 まあバッチファイルでchcp 65001を使うのはやめたほうがいいと思うけど
ワークアラウンドでどうにか対応できなくはないかもしれないw
ワークアラウンドでどうにか対応できなくはないかもしれないw
489デフォルトの名無しさん
2019/10/30(水) 13:25:11.54ID:iT3/p0k9 上の方でcmdがだめならPowerShellを使えばいいじゃないみたいなことが書いてあるけど、
UTF8の出力に関しては、コンソールの問題だから
Windows 7、8.1 ではPowerShellでもバグるんだよな
Windows 7にPowerShell6を入れてみたが、デフォルトで
「あいう」というファイル名が「ああいいうう」と表示される上に
[Console]::OutputEncoding = [Text.Encoding]::UTF8 すると
出力できませんみたいなエラーが発生するw
つまりWindows 7+PowerShell6だと日本語ファイル名は正しく表示されない
標準搭載のPowerShell 2なら問題ないんだけどね
UTF8の出力に関しては、コンソールの問題だから
Windows 7、8.1 ではPowerShellでもバグるんだよな
Windows 7にPowerShell6を入れてみたが、デフォルトで
「あいう」というファイル名が「ああいいうう」と表示される上に
[Console]::OutputEncoding = [Text.Encoding]::UTF8 すると
出力できませんみたいなエラーが発生するw
つまりWindows 7+PowerShell6だと日本語ファイル名は正しく表示されない
標準搭載のPowerShell 2なら問題ないんだけどね
490デフォルトの名無しさん
2019/10/30(水) 13:41:42.20ID:zJjGNXoj それは
>これは、$OutputEncoding が Default だと US-ASCII になっているので、S-JIS 文字列を渡そうとしてもリダイレクト時に日本語がうまく扱えないからです。
>結論から言うと、$OutputEncoding を S-JIS に変更して clip.exe にリダイレクトすれば文字化けしません。
これが関係するのかな?
>これは、$OutputEncoding が Default だと US-ASCII になっているので、S-JIS 文字列を渡そうとしてもリダイレクト時に日本語がうまく扱えないからです。
>結論から言うと、$OutputEncoding を S-JIS に変更して clip.exe にリダイレクトすれば文字化けしません。
これが関係するのかな?
491デフォルトの名無しさん
2019/10/30(水) 13:53:29.35ID:ecgQNQwo hoge ディレクトリに
test_1.txt …半角スペースなし
test 2.txt …半角スペースあり
test 3.txt …全角スペースあり
がある場合に
@echo off
for /f "usebackq" %%I in (`dir /b "hoge"`) do echo %%I
というバッチファイルを実行すると
test_1.txt
test
test 3.txt
となって、普通に dir /b "hoge" を実行した結果と異なり、
半角スペースのある文字列(test 2.txt)を渡せないのだけれど、
どうしたらいいですか?
test_1.txt …半角スペースなし
test 2.txt …半角スペースあり
test 3.txt …全角スペースあり
がある場合に
@echo off
for /f "usebackq" %%I in (`dir /b "hoge"`) do echo %%I
というバッチファイルを実行すると
test_1.txt
test
test 3.txt
となって、普通に dir /b "hoge" を実行した結果と異なり、
半角スペースのある文字列(test 2.txt)を渡せないのだけれど、
どうしたらいいですか?
492デフォルトの名無しさん
2019/10/30(水) 13:53:40.11ID:iT3/p0k9 どこの記事だよw まあググったが。
https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
493デフォルトの名無しさん
2019/10/30(水) 14:08:53.46ID:iT3/p0k9 clipは使ったのことがないので実験。
あとPowerShellのバージョンで色々変わるので、
その記事の内容から検証しないといかんw
■コマンドプロンプトより
・chcp 932の場合
OK: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・chcp 65001の場合
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 932)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
■PowerShell 6.2より
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 65001)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
ただし、コマンドプロンプトおよびPowerShell 5.1では
?になるのにたいしてこっちは文字化けする
あとPowerShellのバージョンで色々変わるので、
その記事の内容から検証しないといかんw
■コマンドプロンプトより
・chcp 932の場合
OK: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・chcp 65001の場合
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 932)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
■PowerShell 6.2より
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code Page 65001)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
ただし、コマンドプロンプトおよびPowerShell 5.1では
?になるのにたいしてこっちは文字化けする
494デフォルトの名無しさん
2019/10/30(水) 14:13:56.47ID:iT3/p0k9 ここはPowerShellのスレじゃないんだがw
$OutputEncoding と [Console]::$OutputEncoding は別もんなんか!?
[Console]は[Console]::WriteLine とか使うときだけかな?
$OutputEncoding と [Console]::$OutputEncoding は別もんなんか!?
[Console]は[Console]::WriteLine とか使うときだけかな?
495デフォルトの名無しさん
2019/10/30(水) 14:16:01.69ID:n2bLSC2q >>491
"usebackq delims="
"usebackq delims="
496デフォルトの名無しさん
2019/10/30(水) 14:21:07.12ID:iT3/p0k9 [Console]::OutputEncoding と $OutputEncoding の
両方をUTF8にしたらユニコード文字含めて文字化けしなかった。
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
?文字化け: echo あいう | clip.exe
?文字化け: echo (ユニコード文字) | clip.exe
???・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
?OK: echo あいう | clip.exe
??OK: echo (ユニコード文字) | clip.exe
両方をUTF8にしたらユニコード文字含めて文字化けしなかった。
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
?文字化け: echo あいう | clip.exe
?文字化け: echo (ユニコード文字) | clip.exe
???・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
?OK: echo あいう | clip.exe
??OK: echo (ユニコード文字) | clip.exe
497デフォルトの名無しさん
2019/10/30(水) 14:22:18.15ID:iT3/p0k9 なぜか書き込みにゴミが入った・・・
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
文字化け: echo あいう | clip.exe
文字化け: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
■Windows 10 の PowerShell 5.1より
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
文字化け: echo あいう | clip.exe
文字化け: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
498デフォルトの名無しさん
2019/10/30(水) 14:24:19.49ID:ecgQNQwo499デフォルトの名無しさん
2019/10/30(水) 14:27:47.60ID:iT3/p0k9 [Console]::OutputEncoding は chcp 相当のことをしていて、
コンソールのコードページを変更しているのに対して、
$OutputEncoding は出力の文字コード変換の制御をしてるっぽい
コンソールのコードページを変更しているのに対して、
$OutputEncoding は出力の文字コード変換の制御をしてるっぽい
500デフォルトの名無しさん
2019/10/30(水) 14:46:57.29ID:iT3/p0k9 [Text.Encoding]::UTF8 じゃなくて [Text.Encoding]::Unicode を使ってもうまくいく
テキスト出力には、ASCII(?)モードとUnicodeモードというのがあるってのはわかってるんだよね
https://blog.miz-ar.info/2017/01/wide-stdio-msvcrt/
> Unicode mode はさらに UNICODE モード (_O_WTEXT)、UTF-8 モード (_O_U8TEXT)、
> UTF-16LE モード (_O_U16TEXT) の3つに細分できる
んで仮説
[Console]::OutputEncoding は OutputEncoding と書いているけど、
実際にはコンソールのコードページを変更するもので
コマンドプロンプトとPowerShellのプロンプト入力の文字コードも変えてしまうから
名前に反して入力にも影響を及ぼしてるんじゃないだろうか?
[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
というのは、つまりプロンプトからの入力をUTF8、出力をUTF8にするという意味
Powershell で文字コードを変更する(clip.exe へのリダイレクトもね)
http://www.vwnet.jp/Windows/PowerShell/CharCode.htm
とかは、コンソールのコードページを変更してない=デフォルトのcp932状態で
echoしてるから入力がcp932、そしてデフォルトの$OutputEncoding=US-ASCIIで
文字化けするから(入力と同じ)cp932で出力しましょうねって話なんだと思う。
Windows 10以前は、コンソールのコードページ65001にバグが有って
使い物にならなかったけど、Windows 10で修正されたから
コードページ65001でコマンドプロンプトもPowerShellも正しく動くようになったんだと思う
(ただしこれは画面出力の問題であって、UTF8でバッチファイルを書いた時のパース処理は別の話)
テキスト出力には、ASCII(?)モードとUnicodeモードというのがあるってのはわかってるんだよね
https://blog.miz-ar.info/2017/01/wide-stdio-msvcrt/
> Unicode mode はさらに UNICODE モード (_O_WTEXT)、UTF-8 モード (_O_U8TEXT)、
> UTF-16LE モード (_O_U16TEXT) の3つに細分できる
んで仮説
[Console]::OutputEncoding は OutputEncoding と書いているけど、
実際にはコンソールのコードページを変更するもので
コマンドプロンプトとPowerShellのプロンプト入力の文字コードも変えてしまうから
名前に反して入力にも影響を及ぼしてるんじゃないだろうか?
[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
というのは、つまりプロンプトからの入力をUTF8、出力をUTF8にするという意味
Powershell で文字コードを変更する(clip.exe へのリダイレクトもね)
http://www.vwnet.jp/Windows/PowerShell/CharCode.htm
とかは、コンソールのコードページを変更してない=デフォルトのcp932状態で
echoしてるから入力がcp932、そしてデフォルトの$OutputEncoding=US-ASCIIで
文字化けするから(入力と同じ)cp932で出力しましょうねって話なんだと思う。
Windows 10以前は、コンソールのコードページ65001にバグが有って
使い物にならなかったけど、Windows 10で修正されたから
コードページ65001でコマンドプロンプトもPowerShellも正しく動くようになったんだと思う
(ただしこれは画面出力の問題であって、UTF8でバッチファイルを書いた時のパース処理は別の話)
501デフォルトの名無しさん
2019/11/02(土) 13:44:45.56ID:+w7z2z4x https://duckduckgo.com/bang
https://duckduckgo.com/bang_lite.html
!you "Batch File"
!tw バッチファイル
!tw "Batch File"
!ig BatchFile
!r BatchFile
!so "Batch File"
!gnuk "Batch File"
!msd cmd
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/windows-commands
https://duckduckgo.com/bang_lite.html
!you "Batch File"
!tw バッチファイル
!tw "Batch File"
!ig BatchFile
!r BatchFile
!so "Batch File"
!gnuk "Batch File"
!msd cmd
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/windows-commands
502デフォルトの名無しさん
2019/11/02(土) 14:20:34.65ID:+UvDifof !hatebu バッチファイル
!qiita バッチファイル
!qiita バッチファイル
503デフォルトの名無しさん
2019/11/03(日) 23:33:41.85ID:/0rS8sv9 質問なのですが、以下の内容を実行するバッチプログラムを作りたいのですが、どなたかご教示頂けないでしょうか。
Cドライブにある「A、B、C、D」という4つのフォルダとサブフォルダの中身全部を、
Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが、コピーする際以下の条件があります。
1.フォルダが1つしかない場合、その中だけにコピーする。
2.フォルダが複数ある場合は、それぞれのフォルダに1.と同様にコピーする。
宜しくお願いします。
Cドライブにある「A、B、C、D」という4つのフォルダとサブフォルダの中身全部を、
Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが、コピーする際以下の条件があります。
1.フォルダが1つしかない場合、その中だけにコピーする。
2.フォルダが複数ある場合は、それぞれのフォルダに1.と同様にコピーする。
宜しくお願いします。
504デフォルトの名無しさん
2019/11/03(日) 23:37:03.86ID:Xh3slsXc >>503
自分で作ってください
自分で作ってください
505デフォルトの名無しさん
2019/11/04(月) 09:25:52.62ID:0uHh5Wp4 宜しくお願いします。と書けば誰かがやってくれるとでも?
xcopy robocopy move for if set call dir findstr
この辺使えりゃ出来るから自分で調べろ
"バッチ バックアップ" とかでググれば腐るほど例が出るだろ
xcopy robocopy move for if set call dir findstr
この辺使えりゃ出来るから自分で調べろ
"バッチ バックアップ" とかでググれば腐るほど例が出るだろ
506デフォルトの名無しさん
2019/11/04(月) 13:01:25.95ID:Zu03xGz4 >>493-500
Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
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
>>503
そんな複雑な条件を、バッチでプログラミングするのは無理!
Ruby などのプログラミングで、再帰的にコピーするか、
PowerShell で、robocopy を使うとか
Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
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
>>503
そんな複雑な条件を、バッチでプログラミングするのは無理!
Ruby などのプログラミングで、再帰的にコピーするか、
PowerShell で、robocopy を使うとか
507デフォルトの名無しさん
2019/11/04(月) 13:46:43.19ID:UHaJ6Kuw > Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
> str = `powershell Get-Clipboard`
Rubyでできないなら、もう全部powershellで書いちゃえよw
> str = `powershell Get-Clipboard`
Rubyでできないなら、もう全部powershellで書いちゃえよw
508506
2019/11/04(月) 15:48:40.94ID:Zu03xGz4 >>503
Ruby で作った。
FileUtils::DryRun では、実際には実行しない
require 'fileutils'
src_dirs = [ "C:/Users/Owner/Documents/A/", "C:/Users/Owner/Documents/test/B/" ]
target_dir = "D:/何々/*"
# target の子フォルダの配列
dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
src_dirs.each do |src_dir| # 2重ループ
dest_dirs.each do |dest_dir|
FileUtils::DryRun.cp_r( src_dir, dest_dir )
end
end
Ruby で作った。
FileUtils::DryRun では、実際には実行しない
require 'fileutils'
src_dirs = [ "C:/Users/Owner/Documents/A/", "C:/Users/Owner/Documents/test/B/" ]
target_dir = "D:/何々/*"
# target の子フォルダの配列
dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
src_dirs.each do |src_dir| # 2重ループ
dest_dirs.each do |dest_dir|
FileUtils::DryRun.cp_r( src_dir, dest_dir )
end
end
509デフォルトの名無しさん
2019/11/04(月) 22:13:40.62ID:mdzUzifN510デフォルトの名無しさん
2019/11/05(火) 12:51:32.26ID:3/4kxzup >>509 参考にどうぞ
@echo off
set s="C:\"
set d="D:\XXXX"
cd/d %s%
for %%i in (A B C D) do call :x "%%~fi" "%%~i"
pause & exit/b
:x
pushd %d%
for /d %%j in (*) do xcopy /e /i %1 "%%~j"\%2
popd
@echo off
set s="C:\"
set d="D:\XXXX"
cd/d %s%
for %%i in (A B C D) do call :x "%%~fi" "%%~i"
pause & exit/b
:x
pushd %d%
for /d %%j in (*) do xcopy /e /i %1 "%%~j"\%2
popd
511デフォルトの名無しさん
2019/11/05(火) 18:52:56.56ID:ykrQtfUP >>510
そんな複雑なことをしなくても、@echo offを除いて1行で書けるだろ。
@echo off
for %%s in (A, B, C, D) do for /d %%d in (D:\XXXX\*) do xcopy "C:\%%s" "%%d\%%s" /e /i
そんな複雑なことをしなくても、@echo offを除いて1行で書けるだろ。
@echo off
for %%s in (A, B, C, D) do for /d %%d in (D:\XXXX\*) do xcopy "C:\%%s" "%%d\%%s" /e /i
512デフォルトの名無しさん
2019/11/05(火) 20:10:31.32ID:3/4kxzup 多分 %%~fd やね
513デフォルトの名無しさん
2019/11/05(火) 20:28:07.61ID:ykrQtfUP %%dだけでフルパスになるから~fは不要。
514デフォルトの名無しさん
2019/11/05(火) 20:42:07.32ID:3/4kxzup そうか失礼いたしました
515デフォルトの名無しさん
2019/11/05(火) 20:50:46.27ID:kqXSHliE 火【22】義母と娘ブルース 11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)________14.15
これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって、
その時点での相加平均値を表示してくれるバッチファイルってできますか?
INPUTを使うのかな
あと、ウィンドウを開いている間生きている変数ってファイルへの格納、取り出しって
そんな面倒なことしてるなら表計算ソフトでも使えってか
これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって、
その時点での相加平均値を表示してくれるバッチファイルってできますか?
INPUTを使うのかな
あと、ウィンドウを開いている間生きている変数ってファイルへの格納、取り出しって
そんな面倒なことしてるなら表計算ソフトでも使えってか
516デフォルトの名無しさん
2019/11/05(火) 21:30:33.42ID:HPnxYMOW517デフォルトの名無しさん
2019/11/05(火) 22:38:05.69ID:aoMnc07l Dim str
str =""
Dim num
Dim ans
Dim bln_Confirm
Function main()
str = InputBox("数値を入力",,str)
If instr(str,"_") Then
ans = Eval("(" & Replace(str,"_","+") & ")/" & UBound(split(str,"_"))+1)
else
ans = Eval(str)
End If
bln_Confirm = MsgBox("入力数値:" & str & vblf & vblf & "入力の平均:" & ans,3,"続ける?")
str = str & "_"
End Function
Do
main
Loop While bln_Confirm = vbYes
VBSならこうかな?
str =""
Dim num
Dim ans
Dim bln_Confirm
Function main()
str = InputBox("数値を入力",,str)
If instr(str,"_") Then
ans = Eval("(" & Replace(str,"_","+") & ")/" & UBound(split(str,"_"))+1)
else
ans = Eval(str)
End If
bln_Confirm = MsgBox("入力数値:" & str & vblf & vblf & "入力の平均:" & ans,3,"続ける?")
str = str & "_"
End Function
Do
main
Loop While bln_Confirm = vbYes
VBSならこうかな?
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 いちいち一個ずつ保存先指定するより楽だよ
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
618デフォルトの名無しさん
2019/11/26(火) 16:10:59.88ID:XdTMGSyO とにかくダウンロードが正常に終わるようにならないと先に進めないだろ
ダウンロード時にフォルダが決まるならそれで問題解決だし
外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題
それが可能(例えばファイル名が行番号になってるとか)なら
落とした後にファイルを対応するフォルダに移動すればいい
もちろんbat等の自動化で
ダウンロード時にフォルダが決まるならそれで問題解決だし
外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題
それが可能(例えばファイル名が行番号になってるとか)なら
落とした後にファイルを対応するフォルダに移動すればいい
もちろんbat等の自動化で
619デフォルトの名無しさん
2019/11/26(火) 16:20:26.70ID:ImxGWCjG start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
urlに&とか%は無いの?
urlに&とか%は無いの?
620デフォルトの名無しさん
2019/11/26(火) 16:26:58.84ID:NW9y+uW0621デフォルトの名無しさん
2019/11/26(火) 16:34:10.52ID:NW9y+uW0 >>619
ある。%20とか?とか。
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
こんな感じ。
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・
えっ??まさか%%
ある。%20とか?とか。
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
こんな感じ。
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・
えっ??まさか%%
622デフォルトの名無しさん
2019/11/26(火) 16:50:52.29ID:ISv3uuWx >>620
一個ずつドラッグドロップする気?
一個ずつドラッグドロップする気?
623デフォルトの名無しさん
2019/11/26(火) 16:51:59.31ID:ISv3uuWx >>618
ダウンローダーなら正常に終わるでしょ
ダウンローダーなら正常に終わるでしょ
624デフォルトの名無しさん
2019/11/26(火) 16:57:32.34ID:XdTMGSyO >>623
一般的なダウンローダなら、urlの末尾がファイル名になるが
名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする
aaa.jpg, aaa(1).jpgのように
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない
これとリストにあるurlとの対応をとるのは大変だと思わん?
一般的なダウンローダなら、urlの末尾がファイル名になるが
名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする
aaa.jpg, aaa(1).jpgのように
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない
これとリストにあるurlとの対応をとるのは大変だと思わん?
625デフォルトの名無しさん
2019/11/26(火) 17:03:32.54ID:JyI6kWkc626デフォルトの名無しさん
2019/11/26(火) 17:04:08.93ID:ISv3uuWx >>624
重複はツリー上で保存すりゃ起きない
重複はツリー上で保存すりゃ起きない
627デフォルトの名無しさん
2019/11/26(火) 17:07:32.81ID:NW9y+uW0 >>622
その方が早いと言ってます。どっちが早いか試してみたら?
https://www.yahoo.co.jp/ ロゴとその左右のアイコン
https://www.rakuten.co.jp/ ロゴから購入履歴までのアイコン
https://www.nikkei.com/ ロゴと、その下の写真3つ
DL先のフォルダ開く、URLひらく、D&D 3工程
URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程
フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程
その方が早いと言ってます。どっちが早いか試してみたら?
https://www.yahoo.co.jp/ ロゴとその左右のアイコン
https://www.rakuten.co.jp/ ロゴから購入履歴までのアイコン
https://www.nikkei.com/ ロゴと、その下の写真3つ
DL先のフォルダ開く、URLひらく、D&D 3工程
URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程
フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程
628デフォルトの名無しさん
2019/11/26(火) 17:10:41.82ID:ImxGWCjG629デフォルトの名無しさん
2019/11/26(火) 17:15:21.53ID:NW9y+uW0 で、私はその3工程ですらめんどくっせーってなって、3工程とも省けんかなと考えた
#今後も同じ作業あるから、今なんとかできてると今後が楽。
ダウンローダーのダウンロード先の問題って、こうなるんだよね
tp://imepic.jp/20191126/620210
ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると
エクスプローラーに行く必要がある
#今後も同じ作業あるから、今なんとかできてると今後が楽。
ダウンローダーのダウンロード先の問題って、こうなるんだよね
tp://imepic.jp/20191126/620210
ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると
エクスプローラーに行く必要がある
630デフォルトの名無しさん
2019/11/26(火) 17:15:53.07ID:ISv3uuWx631デフォルトの名無しさん
2019/11/26(火) 17:18:49.77ID:NW9y+uW0632デフォルトの名無しさん
2019/11/26(火) 17:19:23.77ID:ImxGWCjG 0バイトになるのは書き込み権限とか
管理者で実行しても変わらない?
管理者で実行しても変わらない?
633デフォルトの名無しさん
2019/11/26(火) 17:23:52.25ID:NW9y+uW0 >>632
transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える
transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが
ここが0/0のままで次を始めてしまう
Wait入れようが、Pauseいれようが、そこは同じですね
transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える
transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが
ここが0/0のままで次を始めてしまう
Wait入れようが、Pauseいれようが、そこは同じですね
634デフォルトの名無しさん
2019/11/26(火) 17:42:23.81ID:NW9y+uW0 >>631
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で%
を置き換えてやることにします。
ヒントありがとうございました。
みなさまもたくさんヒントありがとうございました。
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で%
を置き換えてやることにします。
ヒントありがとうございました。
みなさまもたくさんヒントありがとうございました。
635デフォルトの名無しさん
2019/11/26(火) 17:50:12.00ID:XdTMGSyO >>634
""で括ってやれば?
ダメならちょっと上のsetlocal enabledelayedexpansionを参考に
pushd %~dp0
for /f "tokens=1-3" %%A in (li.txt) do (
if not exist "%~dp0\%%A\." mkdir "%~dp0\%%A"
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD "%%B" "%~dp0\%%A\%%C"
)
""で括ってやれば?
ダメならちょっと上のsetlocal enabledelayedexpansionを参考に
pushd %~dp0
for /f "tokens=1-3" %%A in (li.txt) do (
if not exist "%~dp0\%%A\." mkdir "%~dp0\%%A"
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD "%%B" "%~dp0\%%A\%%C"
)
636デフォルトの名無しさん
2019/12/07(土) 09:30:10.75ID:/m01ABgd >>634
おい逃げるなよ
おい逃げるなよ
637デフォルトの名無しさん
2019/12/08(日) 23:47:18.40ID:wNkvi2te638デフォルトの名無しさん
2019/12/09(月) 14:56:56.31ID:0+3TB6cR トレンドに#業務ハックというのが上がってた。フーン
ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは
まさかしていませんよね?
ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは
まさかしていませんよね?
639デフォルトの名無しさん
2019/12/10(火) 05:01:38.65ID:CfjKoCjD 無理そうな気はしつつも質問
苗字<tab>名前<tab>年齢<tab>住所
田中<tab>太郎<tab>27<tab>大阪
山田<tab>花子<tab><tab>東京
佐藤<tab><tab>35<tab>
こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど
tokens=2,4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね
これはもうvbsやVBAじゃないと無理ぽかな
苗字<tab>名前<tab>年齢<tab>住所
田中<tab>太郎<tab>27<tab>大阪
山田<tab>花子<tab><tab>東京
佐藤<tab><tab>35<tab>
こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど
tokens=2,4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね
これはもうvbsやVBAじゃないと無理ぽかな
640デフォルトの名無しさん
2019/12/10(火) 07:15:07.41ID:BTxKZMwl >>639
delimsに指定してもダメなの?
delimsに指定してもダメなの?
641デフォルトの名無しさん
2019/12/10(火) 07:44:27.57ID:CfjKoCjD 半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー
642デフォルトの名無しさん
2019/12/10(火) 09:16:41.59ID:3V5uc2tI >>639
tabの間にスペースを入れてみた。
これは前処理なので、あとはお好きにどうぞ
@echo off
set "t=<tab>"
call :x > test2.txt
pause & goto :eof
:x
for /f "delims=" %%i in (test1.txt) do ( set a=%%i
setlocal enabledelayedexpansion
set a=!a:%t%%t%=%t% %t%!
set a=!a:%t%%t%=%t% %t%!
echo.!a!
endlocal)
<tab>にはタブを入力
tabの間にスペースを入れてみた。
これは前処理なので、あとはお好きにどうぞ
@echo off
set "t=<tab>"
call :x > test2.txt
pause & goto :eof
:x
for /f "delims=" %%i in (test1.txt) do ( set a=%%i
setlocal enabledelayedexpansion
set a=!a:%t%%t%=%t% %t%!
set a=!a:%t%%t%=%t% %t%!
echo.!a!
endlocal)
<tab>にはタブを入力
643デフォルトの名無しさん
2019/12/11(水) 01:05:38.94ID:hz4JPg2Q おお、値の無い列には半角スペースを入れてしまうわけか
こりゃ気付かんかったサンクス
こりゃ気付かんかったサンクス
644デフォルトの名無しさん
2019/12/13(金) 01:06:30.14ID:7bx1tfw6 バッチでフォルダの表示方法とかかえられないよ?
詳細にして 表示の種類に長さとか大きさとか
いれたいんだけど
それをワンクリックでやりたい
https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg
名前とか日付のとこに 長さとか大きさを追加するってことね
詳細にして 表示の種類に長さとか大きさとか
いれたいんだけど
それをワンクリックでやりたい
https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg
名前とか日付のとこに 長さとか大きさを追加するってことね
645デフォルトの名無しさん
2019/12/13(金) 01:06:50.17ID:7bx1tfw6 かえられないよの?
646デフォルトの名無しさん
2019/12/13(金) 04:06:09.26ID:t9dRWycX >>645
レジストリ値弄れば出来たと思う。
昔職場の環境統一するのに使ってた。
詳細はRegshotとかで差分とって。
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。
レジストリ値弄れば出来たと思う。
昔職場の環境統一するのに使ってた。
詳細はRegshotとかで差分とって。
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。
647デフォルトの名無しさん
2019/12/13(金) 04:07:58.73ID:t9dRWycX >>645
設定後にShellの再起動も必要だったかも。
設定後にShellの再起動も必要だったかも。
648デフォルトの名無しさん
2019/12/13(金) 06:18:44.99ID:SOm460Ps649デフォルトの名無しさん
2019/12/19(木) 16:55:31.02ID:l8jrOhSU こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
まあ実用上の問題は無いんですが
@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause
まあ実用上の問題は無いんですが
@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause
650デフォルトの名無しさん
2019/12/19(木) 17:08:49.51ID:TZP99wd2 ピリオドとかコロンじゃなくて、カンマとかセミコロン使えばいいよ
651デフォルトの名無しさん
2019/12/19(木) 17:16:19.46ID:TZP99wd2 イコールもお仲間で、この3つが特別区切り記号らしいよ
652デフォルトの名無しさん
2019/12/19(木) 17:18:33.06ID:l8jrOhSU >>650
はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました
はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました
653デフォルトの名無しさん
2019/12/19(木) 17:23:09.51ID:TZP99wd2 特別区切り記号だから
654デフォルトの名無しさん
2019/12/22(日) 19:05:52.87ID:DvnYZkai /rが悪さをしてるんじゃね
サブフォルダの中でピリオドを2個にして
サブフォルダの中でピリオドを2個にして
655デフォルトの名無しさん
2019/12/23(月) 21:26:36.07ID:qZ1/nSQb startコマンドでAPを起動後、「F11」をバッチファイルから入力するには、どう記述すればいいのでしょうか?
656デフォルトの名無しさん
2019/12/25(水) 01:34:54.95ID:vipj7N9s echo class Program{static void Main(){System.Windows.Forms.SendKeys.SendWait("{F11}");}}>temp.cs
FOR /F %%i IN ('dir /b /s %WINDIR%\Microsoft.NET\Framework\csc.exe') DO set cscexe=%%i
%cscexe% temp.cs
temp.exe
FOR /F %%i IN ('dir /b /s %WINDIR%\Microsoft.NET\Framework\csc.exe') DO set cscexe=%%i
%cscexe% temp.cs
temp.exe
657デフォルトの名無しさん
2019/12/25(水) 11:28:21.34ID:E0w5VXt3 >>656
ワラタ
ワラタ
658デフォルトの名無しさん
2019/12/25(水) 12:39:52.06ID:32sm7KoS >>656
すごいな、プロ?
すごいな、プロ?
659デフォルトの名無しさん
2019/12/26(木) 00:38:52.07ID:ocAthgHy ウイルスに使えそうw
660デフォルトの名無しさん
2019/12/26(木) 18:09:54.44ID:gPRn8RL/ 職業 プロバッチファイルスクリプター(自称)
661デフォルトの名無しさん
2019/12/27(金) 00:09:22.71ID:CW1qzWXe %1がフォルダ名の場合、サイズを示す%~z1は0以外の数字になる
何を表しているのか不明
何を表しているのか不明
662デフォルトの名無しさん
2019/12/27(金) 07:50:28.51ID:sZ8rOkNi エントリーレコードのsizeじゃね?テキトーmaybe
663デフォルトの名無しさん
2019/12/28(土) 12:01:21.14ID:c8Bqzbdx664デフォルトの名無しさん
2020/01/02(木) 17:54:09.99ID:LCDlLvJS for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください
dir /tc 何か | findstr findstr /e /c:"<DIR> ."
みたいにして取り出して整形するのは何か間違えている気がしてならないので
dir /tc 何か | findstr findstr /e /c:"<DIR> ."
みたいにして取り出して整形するのは何か間違えている気がしてならないので
665デフォルトの名無しさん
2020/01/02(木) 20:56:32.19ID:gZNl6+48 %~t1 とかで出てくるのは更新日時じゃなかった?
作成日時ならそれでいんじゃね?
for /f "skip=3 tokens=1-3,5,6 delims=/: " %a in ('dir /tc %windir%') do (
echo %a%b%c%d%e
goto :LOOPOUT
)
:LOOPOUT
pause
日時はシステム依存で表示形式変わるので整形したい形に適宜tokensやdelims、echoのとこ弄るといい
何に利用するのか知らないけど powershell なら秒まで取得出来るしバッチより痒いところに手が届く
作成日時ならそれでいんじゃね?
for /f "skip=3 tokens=1-3,5,6 delims=/: " %a in ('dir /tc %windir%') do (
echo %a%b%c%d%e
goto :LOOPOUT
)
:LOOPOUT
pause
日時はシステム依存で表示形式変わるので整形したい形に適宜tokensやdelims、echoのとこ弄るといい
何に利用するのか知らないけど powershell なら秒まで取得出来るしバッチより痒いところに手が届く
666デフォルトの名無しさん
2020/01/02(木) 20:59:21.16ID:gZNl6+48 修正
%a→%%a
echo %%a%%b%%c%%d%%e
%a→%%a
echo %%a%%b%%c%%d%%e
667デフォルトの名無しさん
2020/01/03(金) 08:18:43.19ID:6GenP8Ub ありがとうございます
何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、
って話になるんですね、ミリ秒単位までいけるみたいですし
何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、
って話になるんですね、ミリ秒単位までいけるみたいですし
668デフォルトの名無しさん
2020/01/03(金) 09:56:56.50ID:+cYn5CAB forfiles でフォルダの更新日時も得られる、ただしファイルが多いと遅い
forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
dirだと得られない秒もOK、仕様がばらばら、バッチは不思議
forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
dirだと得られない秒もOK、仕様がばらばら、バッチは不思議
669デフォルトの名無しさん
2020/01/03(金) 13:02:11.21ID:fh28MJ7p 気まぐれに試してみたらskip=2と3の結果が同じでskip=4だった
ifでちゃんと絞った方が良さげ
for /f "tokens=1,3,4* delims= " %a in ('dir /ad /tc %windir%') do @if "%d"=="." @echo %a %b
ifでちゃんと絞った方が良さげ
for /f "tokens=1,3,4* delims= " %a in ('dir /ad /tc %windir%') do @if "%d"=="." @echo %a %b
670デフォルトの名無しさん
2020/01/04(土) 01:23:14.19ID:/SGph6WX dir ?
親DIRがピリオド2文字なのに
なぜ表示されるのか
親DIRがピリオド2文字なのに
なぜ表示されるのか
671デフォルトの名無しさん
2020/01/04(土) 07:59:26.77ID:T5YxFwCT . と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ
だから .. の(作成|更新)日時は自ディレクトリと同じ
.. は親ディレクトリを指し示すが親ディレクトリとは別のモノ
なぜと問われても、そういう仕様だから、としか
だから .. の(作成|更新)日時は自ディレクトリと同じ
.. は親ディレクトリを指し示すが親ディレクトリとは別のモノ
なぜと問われても、そういう仕様だから、としか
672デフォルトの名無しさん
2020/01/04(土) 09:10:30.39ID:/SGph6WX673デフォルトの名無しさん
2020/01/05(日) 07:41:36.68ID:QOfK3b7c >>670
dir /b ? だと表示しない謎
dir /b ? だと表示しない謎
674デフォルトの名無しさん
2020/01/06(月) 09:00:53.84ID:VNkic2h1 ディレクトリと同じ扱いだから
675デフォルトの名無しさん
2020/01/06(月) 09:51:26.33ID:8LUwvv7f 先頭にドットがあると要注意だよな
ワイルドカードがドットを無視する場合があるから
>copy nul .txt
>copy nul txt
>dir/b
.txt
txt
>del txt*
>dir
ファイルが見つかりません
ワイルドカードがドットを無視する場合があるから
>copy nul .txt
>copy nul txt
>dir/b
.txt
txt
>del txt*
>dir
ファイルが見つかりません
676デフォルトの名無しさん
2020/01/08(水) 10:00:17.73ID:cX66OF4O 簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって、なんでbatで書いちゃったんだろってなるのいい加減やめたい
677デフォルトの名無しさん
2020/01/09(木) 05:17:30.74ID:yWGnEtOx @echo off
for /L %%a in (1,1,666) do set /a a+=%%a
for /L %%a in (2,2,666) do set /a a+=%%a
echo %a%
pause
for /L で遊んでたらなんか凄いの見付けた
for /L %%a in (1,1,666) do set /a a+=%%a
for /L %%a in (2,2,666) do set /a a+=%%a
echo %a%
pause
for /L で遊んでたらなんか凄いの見付けた
678デフォルトの名無しさん
2020/01/09(木) 07:12:55.26ID:hqwlnXXW >>676
PowerShellでいいんじゃね?
PowerShellでいいんじゃね?
679デフォルトの名無しさん
2020/01/17(金) 04:34:01.53ID:AQjsaOZ5 ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど
win10です
テスト.bat
-----------------------
@echo off
for %%f in (%*) do (
echo %%f
)
pause
--------------------------
だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
ちなみに
@echo off
echo %1
pause
だけだとちゃんとフルパスで表示されます
%%と%の違いってなんですか?
win10です
テスト.bat
-----------------------
@echo off
for %%f in (%*) do (
echo %%f
)
pause
--------------------------
だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
ちなみに
@echo off
echo %1
pause
だけだとちゃんとフルパスで表示されます
%%と%の違いってなんですか?
680デフォルトの名無しさん
2020/01/17(金) 05:40:03.52ID:FVJQifjo 引数が最低1つ以上の場合
:LOOP
echo "%~nx1"
shift
if not "%~1"=="" goto :LOOP
pause
引数が0個の可能性がある場合
:LOOP
if "%~1"=="" pause &exit /b
echo "%~nx1"
shift
goto :LOOP
:LOOP
echo "%~nx1"
shift
if not "%~1"=="" goto :LOOP
pause
引数が0個の可能性がある場合
:LOOP
if "%~1"=="" pause &exit /b
echo "%~nx1"
shift
goto :LOOP
681デフォルトの名無しさん
2020/01/17(金) 08:29:31.32ID:B/evOggr shift使わない方法でお願いします
682デフォルトの名無しさん
2020/01/17(金) 08:39:02.58ID:FVJQifjo >>679
その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて
引数がクオートされていない場合に上手く行かない
がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認
その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて
引数がクオートされていない場合に上手く行かない
がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認
683デフォルトの名無しさん
2020/01/17(金) 18:45:30.02ID:Xdf1G9+g WSLって専用スレあったりする?
684デフォルトの名無しさん
2020/01/17(金) 18:48:00.37ID:T5MzU9c3685デフォルトの名無しさん
2020/01/18(土) 06:36:29.01ID:77YAYmoS >あー>>680のやり方の方がいいわせか
そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ
バッチはどうやってもバグを内包する。極論動けば何でもいい
バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる
そういったのを理解した上で簡単な事をやるくらいならいいけど
少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる
面倒を避けたいなら初めからPowerShellとかでやった方がいい
今から覚えるなら尚更
そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ
バッチはどうやってもバグを内包する。極論動けば何でもいい
バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる
そういったのを理解した上で簡単な事をやるくらいならいいけど
少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる
面倒を避けたいなら初めからPowerShellとかでやった方がいい
今から覚えるなら尚更
686デフォルトの名無しさん
2020/01/18(土) 08:02:35.56ID:UuH5oHRt687デフォルトの名無しさん
2020/01/18(土) 23:29:59.70ID:jJ2WRqDf688デフォルトの名無しさん
2020/01/23(木) 20:57:19.47ID:qiuXI8ht689デフォルトの名無しさん
2020/01/26(日) 21:47:29.72ID:Nyn5xlpx 2つのウィンドウで別フォルダを表示してファイル存在の有無によって選択/解除ができその後コピーや移動ができる、そんなファイラーがあったら便利だなと探してました。
WinZIP関係のソフトで7-zipというのがあり、なぜか解凍するとその中に7-zip file managerというのが入っていて
起動してみると左右で別フォルダを表示することができオッ、と思ったのですが、存在を比較する機能はありませんでしたorz
ファイル存在比較 で検索したら 【バッチ作成】の文字が目にとまりページを開くと次のようなバッチファイルでした。コピー/移動作業前の確認用に
便利だなと思いました。実際はif existでもいいし、自分用に少し書き換えました
@echo off
echo AにあってBに無いファイル
pushd \A
for %%X in (*) do if not exist \B\%%X echo %%X
popd
echo BにあってAに無いファイル
pushd \B
for %%X in (*) do if not exist \A\%%X echo %%X
popd
popd、pushdってアスキーのラーニングシステムシリーズ本のMS-DOSのやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした。
WinZIP関係のソフトで7-zipというのがあり、なぜか解凍するとその中に7-zip file managerというのが入っていて
起動してみると左右で別フォルダを表示することができオッ、と思ったのですが、存在を比較する機能はありませんでしたorz
ファイル存在比較 で検索したら 【バッチ作成】の文字が目にとまりページを開くと次のようなバッチファイルでした。コピー/移動作業前の確認用に
便利だなと思いました。実際はif existでもいいし、自分用に少し書き換えました
@echo off
echo AにあってBに無いファイル
pushd \A
for %%X in (*) do if not exist \B\%%X echo %%X
popd
echo BにあってAに無いファイル
pushd \B
for %%X in (*) do if not exist \A\%%X echo %%X
popd
popd、pushdってアスキーのラーニングシステムシリーズ本のMS-DOSのやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした。
690デフォルトの名無しさん
2020/01/26(日) 23:31:16.84ID:Jc09ZNe5 そんなことまで無理にcmdでやらんでも・・・
WinMergeすら入れさせてもらえない環境なのか?
WinMergeすら入れさせてもらえない環境なのか?
691デフォルトの名無しさん
2020/01/27(月) 09:15:34.68ID:+0QHC3Wk 日記?
692デフォルトの名無しさん
2020/01/28(火) 22:49:16.68ID:lbmGsP+l "送る"って意外と不自由なんだな…
バッチファイルでワンクッション入れて(゚д゚)ウマー
バッチファイルでワンクッション入れて(゚д゚)ウマー
693デフォルトの名無しさん
2020/01/28(火) 23:14:40.52ID:Vj4Y99PX 何が不自由なの
694デフォルトの名無しさん
2020/01/30(木) 20:40:29.71ID:6k+E856c このバッチで何か入力しても a が消える
@echo off
set /p a=data=
rem %a=%
echo data=%a%
pause
@echo off
set /p a=data=
rem %a=%
echo data=%a%
pause
695デフォルトの名無しさん
2020/01/30(木) 22:45:14.45ID:VR7HU+gm >693
勉強不足があるかも知れんが
・さっさと画面を閉じちゃう(cmd/kで回避)
・%1に入れてくれない
・ファイル名の後ろにオプションが付けられない
勉強不足があるかも知れんが
・さっさと画面を閉じちゃう(cmd/kで回避)
・%1に入れてくれない
・ファイル名の後ろにオプションが付けられない
696デフォルトの名無しさん
2020/01/30(木) 23:26:29.39ID:D5cDwkr0 ワンクッションってそういう意味か
昔からスクリプトを送るに登録することなんて当たり前のことだったけどね
むしろexeしか登録しない人はこのスレにはいないとまで思ってた
昔からスクリプトを送るに登録することなんて当たり前のことだったけどね
むしろexeしか登録しない人はこのスレにはいないとまで思ってた
697デフォルトの名無しさん
2020/01/31(金) 11:16:38.40ID:JWfC0/9e >>694 何かエラーすると正常になるよ(笑)
@echo off
set a=123
rem %a=%
if defined a (echo 1) else echo 0
echo a=%a%
nul 2> nul
if defined a (echo 1) else echo 0
echo a=%a%
pause
結果
0
a=
1
a=123
@echo off
set a=123
rem %a=%
if defined a (echo 1) else echo 0
echo a=%a%
nul 2> nul
if defined a (echo 1) else echo 0
echo a=%a%
pause
結果
0
a=
1
a=123
698デフォルトの名無しさん
2020/02/09(日) 18:23:32.44ID:62ExnvKA 叩いたらスクリーンセーバーをオフにしたく、killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど、Windows10のタブレットモードで動かすとスタートメニューが起動してしまう。
元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな?
ソフトを立ち上げっぱなし→スクリーンセーバー起動→条件下でスクリーンセーバーkillバッチ→立ち上げてたソフトに戻る
ってのにしたいのにkillバッチ→スタートメニューになってしまう
あと、バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない…
元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな?
ソフトを立ち上げっぱなし→スクリーンセーバー起動→条件下でスクリーンセーバーkillバッチ→立ち上げてたソフトに戻る
ってのにしたいのにkillバッチ→スタートメニューになってしまう
あと、バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない…
699デフォルトの名無しさん
2020/02/10(月) 13:13:43.33ID:0DoxGo8j スクリーンセーバー動いてるのに、
どうやってバッチ叩いてんの?
さっぱりわからん
どうやってバッチ叩いてんの?
さっぱりわからん
700デフォルトの名無しさん
2020/02/10(月) 23:18:37.16ID:B/3TWI1a >>698
ネタだよね?
ネタだよね?
701デフォルトの名無しさん
2020/02/11(火) 12:30:00.59ID:DitzTCfU 何かをトリガーにしてタスクから叩くって事じゃないかな
702デフォルトの名無しさん
2020/02/11(火) 17:11:28.69ID:DSTYXSth 特定のキー操作で解除するタイプのスクリーンセーバーなのかな?
でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど
でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど
703デフォルトの名無しさん
2020/02/11(火) 17:51:57.47ID:hksaF/sY Windows7標準のmklinkでシンボリックリンクを作ると
リンクのタイムスタンプ(作成、更新、アクセスいずれも)は
リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり
普通のファイルのようにはタイムスタンプを変更できないようだけど
変更する方法ある?
ハードリンクなら同じものを見ることになるから勝手に揃うけど
使い分けの方針が定まらなくてあまり使ってない
リンクのタイムスタンプ(作成、更新、アクセスいずれも)は
リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり
普通のファイルのようにはタイムスタンプを変更できないようだけど
変更する方法ある?
ハードリンクなら同じものを見ることになるから勝手に揃うけど
使い分けの方針が定まらなくてあまり使ってない
704デフォルトの名無しさん
2020/02/11(火) 23:47:43.79ID:9k84sg+E705デフォルトの名無しさん
2020/02/14(金) 23:11:39.08ID:2Mmdz3hG Windows Vistaは2017年にサポートが終了しましたがWindows Server 2008向けのセキュリティ更新プログラムを手動でインストールすることができていました。
ところがどの順番でどれをインスコすればいいのか面倒、、、それを解決するバッチプログラムを作った方がいます。
バッチファイルの記述がフムフム、へぇ〜という感じで自分にはとても勉強になりました。興味ある方はどぞ
創造の柱
http://blog.livedoor.jp/pillars_of_creation/archives/1831755.html
ところがどの順番でどれをインスコすればいいのか面倒、、、それを解決するバッチプログラムを作った方がいます。
バッチファイルの記述がフムフム、へぇ〜という感じで自分にはとても勉強になりました。興味ある方はどぞ
創造の柱
http://blog.livedoor.jp/pillars_of_creation/archives/1831755.html
706デフォルトの名無しさん
2020/03/24(火) 10:56:05.36 このスレで聞くべきなのか分かりませんが、Windowsで数千個のPDFを一括処理したいので、取りあえずここで聞いてみます。
PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で、"表示"、"ページレイアウト"、"倍率"を設定できますが、
1つ1つ手作業で設定するのはさすがに無理です。
Javaの様なプログラミング言語でも、他のアプリでも何でもいいんですが、この文書のプロパティを一括で設定する方法って何がありますか?
PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で、"表示"、"ページレイアウト"、"倍率"を設定できますが、
1つ1つ手作業で設定するのはさすがに無理です。
Javaの様なプログラミング言語でも、他のアプリでも何でもいいんですが、この文書のプロパティを一括で設定する方法って何がありますか?
707デフォルトの名無しさん
2020/03/24(火) 18:54:16.84ID:k6OnWQi4 それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?
708デフォルトの名無しさん
2020/03/24(火) 19:52:05.20ID:LC2xv/4E 変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね
709デフォルトの名無しさん
2020/03/24(火) 20:27:13.25 >>707
Acrobat側の表示方法を変えるのじゃ無く、PDF側で変えたい
Acrobat側の表示方法を変えるのじゃ無く、PDF側で変えたい
710デフォルトの名無しさん
2020/03/24(火) 20:53:17.46ID:k6OnWQi4 そもそもPDF側に表示方法が保存されてるものなの?
結局Acrobat側の問題じゃない?
結局Acrobat側の問題じゃない?
711デフォルトの名無しさん
2020/03/24(火) 22:35:05.89ID:tH0Sn0AY 「pdf コマンドライン ページレイアウト」でググったら
cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた
これ、見開きを縦スクロールにしたり単ページにしたりできて面白い
"倍率" が 2017/10 の時点で無理らしいけど
cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた
これ、見開きを縦スクロールにしたり単ページにしたりできて面白い
"倍率" が 2017/10 の時点で無理らしいけど
712デフォルトの名無しさん
2020/03/26(木) 01:20:56.78ID:3WOBAGMl ID消して質問してるのがすげー腹立つな
本当に解決を望んでるなら逆にコテ付けるぐらいできんのか
本当に解決を望んでるなら逆にコテ付けるぐらいできんのか
713デフォルトの名無しさん
2020/03/30(月) 02:44:24.40ID:X7klH3J+ windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど
714デフォルトの名無しさん
2020/04/18(土) 11:05:03.45ID:6HUykZ9A 今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな
いちいちコードページ指定するとなんかウィンドウが切り替わって重いし
cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
いちいちコードページ指定するとなんかウィンドウが切り替わって重いし
cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
715デフォルトの名無しさん
2020/04/18(土) 14:03:40.50ID:a+OnqKl3 MSはレガシーのために保守してるだけだろ
powershell使え
powershell使え
716デフォルトの名無しさん
2020/04/18(土) 16:57:49.71ID:VodBEB+r 例えば、こんなバッチをutf-8で作成して実行する。
できたtest.txtを見たら1行しかない。なんでだ。
@echo off
chcp 65001
call :test > test.txt
exit
:test
echo テスト
echo テスト
できたtest.txtを見たら1行しかない。なんでだ。
@echo off
chcp 65001
call :test > test.txt
exit
:test
echo テスト
echo テスト
717デフォルトの名無しさん
2020/04/18(土) 17:12:48.44ID:fYZW+FI9718デフォルトの名無しさん
2020/04/18(土) 17:22:50.42ID:D5FH+wQt 2つめのechoがエラーになってるね
echo テスト
echo テスト
と間に空白行を挟めば正常だがどういう理屈なのか分からん
echo テスト
echo テスト
と間に空白行を挟めば正常だがどういう理屈なのか分からん
719デフォルトの名無しさん
2020/04/18(土) 17:31:32.83ID:VodBEB+r れすサンクス
720デフォルトの名無しさん
2020/04/21(火) 19:56:52.87ID:vK3trFFL %2つというのは、何らかのエスケープですか?
また、forを使うときにfor %iなどとしますが、%の意味がよくわかりません
また、forを使うときにfor %iなどとしますが、%の意味がよくわかりません
721デフォルトの名無しさん
2020/04/21(火) 21:11:11.38ID:vK3trFFL フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか
forを使用してインデックスを連番として付与する感じだと思うんですが
ファイルはこんな感じです
犬.txt
猫.txt
猿.txt
forを使用してインデックスを連番として付与する感じだと思うんですが
ファイルはこんな感じです
犬.txt
猫.txt
猿.txt
722デフォルトの名無しさん
2020/04/21(火) 21:17:03.32ID:FdhLTsrP723デフォルトの名無しさん
2020/04/21(火) 21:26:09.14ID:M3jMZi3+ >>720
%は変数を定義する時に使うよ %iで「iという変数」になるよ
バッチプログラムで使う時は%%iにする必要があるよ
https://www.pg-fl.jp/program/dos/doscmd/for.htm
「%」のページも読んだ方が良いよ
%は変数を定義する時に使うよ %iで「iという変数」になるよ
バッチプログラムで使う時は%%iにする必要があるよ
https://www.pg-fl.jp/program/dos/doscmd/for.htm
「%」のページも読んだ方が良いよ
724デフォルトの名無しさん
2020/04/21(火) 22:46:58.98ID:HADG6GDb >>721
Ruby で作った。
ただし、DryRun なので実際には実行されません。
001.txt, 002.txt に変わります
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/test/*"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる
# format で、0埋め3桁表示にする。extname は拡張子
# ファイル名は、001.txt, 002.txt など
dest_path = target_dir + "/" + ( "%03d" % idx ) + File.extname( full_path )
FileUtils::DryRun.move( full_path, dest_path )
end
Ruby で作った。
ただし、DryRun なので実際には実行されません。
001.txt, 002.txt に変わります
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
dir_path = "C:/Users/Owner/test/*"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each.with_index( 1 ) do |full_path, idx| # index は、1 から始まる
# format で、0埋め3桁表示にする。extname は拡張子
# ファイル名は、001.txt, 002.txt など
dest_path = target_dir + "/" + ( "%03d" % idx ) + File.extname( full_path )
FileUtils::DryRun.move( full_path, dest_path )
end
725デフォルトの名無しさん
2020/04/21(火) 22:54:20.97ID:h/bjIQIw rubyはスレ違い
726デフォルトの名無しさん
2020/04/21(火) 23:04:39.20ID:s3lLVMWt 3桁連番付けただけ
@echo off & set n=1001
for %%i in (*.txt) do set a=%%i& call :x
goto :eof
:x
ren "%a%" "%n:~1%-%a%" & set /a n+=1
@echo off & set n=1001
for %%i in (*.txt) do set a=%%i& call :x
goto :eof
:x
ren "%a%" "%n:~1%-%a%" & set /a n+=1
727デフォルトの名無しさん
2020/04/21(火) 23:14:39.66ID:J0u+GdjC リネームは結構難しい
リネーム後のファイルが再びリネーム対象となる場合がある
リネーム後のファイルが再びリネーム対象となる場合がある
728デフォルトの名無しさん
2020/04/21(火) 23:27:06.64ID:alPdontK set N=1000
:LOOP
if "%~1"=="" exit /b
set /a N+=1
ren "%~1" "%N:~-3% %~nx1"
shift
goto :LOOP
:LOOP
if "%~1"=="" exit /b
set /a N+=1
ren "%~1" "%N:~-3% %~nx1"
shift
goto :LOOP
729デフォルトの名無しさん
2020/04/21(火) 23:28:37.78ID:s3lLVMWt リネーム後のファイル名が既存だったりするし
730デフォルトの名無しさん
2020/04/21(火) 23:49:32.13ID:GY5lnYbX リネームは一覧を一旦ファイルに出力してから回した方が安全だよ
それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
vbsかjsかpowershell
それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
vbsかjsかpowershell
731724
2020/04/21(火) 23:57:26.74ID:HADG6GDb >>724
のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" )
で、そのフォルダ内のすべてのファイルを取得しているから、
各ファイルを、rename していく途中で、
rename後のファイルを、再びrenameすることはない
のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" )
で、そのフォルダ内のすべてのファイルを取得しているから、
各ファイルを、rename していく途中で、
rename後のファイルを、再びrenameすることはない
732デフォルトの名無しさん
2020/04/22(水) 00:04:16.90ID:vEO7RF6u733デフォルトの名無しさん
2020/04/22(水) 06:52:59.32ID:gobEj/px >>721
@echo off & set "n=1001" & set t=tmp_dir
md %t% & for %%i in (*.txt) do set a=%%i& call :x
move %t%\* . > nul & rd %t% & goto :eof
:x
move "%a%" "%t%\%n:~1%-%a%" > nul & set /a n+=1
tmp_dirの名前は何でもいいが既存の名前を避けてください。
@echo off & set "n=1001" & set t=tmp_dir
md %t% & for %%i in (*.txt) do set a=%%i& call :x
move %t%\* . > nul & rd %t% & goto :eof
:x
move "%a%" "%t%\%n:~1%-%a%" > nul & set /a n+=1
tmp_dirの名前は何でもいいが既存の名前を避けてください。
734デフォルトの名無しさん
2020/04/22(水) 09:12:13.99ID:UZ0N9G3p735デフォルトの名無しさん
2020/04/22(水) 10:16:03.76ID:MJO3kN2U 駄目文字のせいでSJISコードがバグると言うならまだわかるが
その逆って意味がわからないな
MSは全くテストしてないってことか
その逆って意味がわからないな
MSは全くテストしてないってことか
736デフォルトの名無しさん
2020/04/22(水) 11:07:12.34ID:/W5c3Vma737デフォルトの名無しさん
2020/04/22(水) 11:53:22.55ID:/W5c3Vma 複数行を一行にまとめる場合は、&でつなぐんでしょうか?
これが改行と同じ意味でしょうかね。
これが改行と同じ意味でしょうかね。
738デフォルトの名無しさん
2020/04/22(水) 12:07:17.67ID:vEO7RF6u739デフォルトの名無しさん
2020/04/22(水) 19:08:42.79ID:nR8TNEgs740デフォルトの名無しさん
2020/04/22(水) 19:11:46.73ID:nR8TNEgs >>739
または複数コマンドを一行で記述する話?
または複数コマンドを一行で記述する話?
741デフォルトの名無しさん
2020/04/22(水) 20:05:53.95ID:j1ZYXyL3 >>735
コマンドプロンプトは自体はUNICODE対応
各種コマンドもUNICODE対応
だけどバッチファイルは過去の互換性が必要なので
デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。
その設定はchcpで変えることが出来る
単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが
forでバッチファイルの世界に招き入れたら、
chcpの設定によって文字コードの変換が行われる
テストはしてるだろ。この文字コード変換は仕様なので
バッチファイルでUNICODE文字を扱いたければchcpで
UTF-8に変更しなければならないというだけのこと
コマンドプロンプトは自体はUNICODE対応
各種コマンドもUNICODE対応
だけどバッチファイルは過去の互換性が必要なので
デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。
その設定はchcpで変えることが出来る
単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが
forでバッチファイルの世界に招き入れたら、
chcpの設定によって文字コードの変換が行われる
テストはしてるだろ。この文字コード変換は仕様なので
バッチファイルでUNICODE文字を扱いたければchcpで
UTF-8に変更しなければならないというだけのこと
742デフォルトの名無しさん
2020/04/23(木) 06:47:17.74ID:153+oMoq >>739
バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
743デフォルトの名無しさん
2020/04/23(木) 08:24:04.38ID:5iduMLE+ >>742
複数行をコピペじゃ駄目なの?
例えば、この内容をメモ帳に記述しておいて
rem ―- ここから ――
dism /online /cleanup-image /restorehealth
sfc /scannow
rem ―- ここまで ―-
4行をコピペする
複数行をコピペじゃ駄目なの?
例えば、この内容をメモ帳に記述しておいて
rem ―- ここから ――
dism /online /cleanup-image /restorehealth
sfc /scannow
rem ―- ここまで ―-
4行をコピペする
744デフォルトの名無しさん
2020/04/23(木) 09:07:36.24ID:Z6s7Y3Lu >>742
複数コマンドを1行で実行したいということなら、、、
A & B ... A実行後にBを実行
A | B ... Aの実行結果をBに渡して実行
A && B ... Aが成功したらBを実行
A || B ... Aが失敗したらBを実行
長いコマンドを複数行に分割したいなら、、、
Sentence1 ^<改行>
Sentence2
(サーカムフレックスで継続)
複数コマンドを1行で実行したいということなら、、、
A & B ... A実行後にBを実行
A | B ... Aの実行結果をBに渡して実行
A && B ... Aが成功したらBを実行
A || B ... Aが失敗したらBを実行
長いコマンドを複数行に分割したいなら、、、
Sentence1 ^<改行>
Sentence2
(サーカムフレックスで継続)
745デフォルトの名無しさん
2020/04/23(木) 12:04:05.59ID:qTwHi2aC ()で囲めばいい。
(timeout /t 300
cd d f:\hoge
for %f in ( *.jpg ) do (
・・・
)
)
正式名称が何かは知らないが勝手にブロックと呼んでる。
(timeout /t 300
cd d f:\hoge
for %f in ( *.jpg ) do (
・・・
)
)
正式名称が何かは知らないが勝手にブロックと呼んでる。
746デフォルトの名無しさん
2020/04/23(木) 14:59:02.07ID:WFX6w8Jo >>744
そういうのがあるのか、| 以外知らなかった
そういうのがあるのか、| 以外知らなかった
747デフォルトの名無しさん
2020/04/23(木) 14:59:42.71ID:WFX6w8Jo >>745
これも知らなかった
これも知らなかった
748デフォルトの名無しさん
2020/04/23(木) 15:25:29.03ID:153+oMoq >>743コピペでももちろんいいですが、知っておきたかったです
749デフォルトの名無しさん
2020/04/23(木) 16:03:20.39ID:eZrYYRVL なんでバッチ嫌なの?
750デフォルトの名無しさん
2020/04/23(木) 17:31:56.25ID:P2MaiEJS751デフォルトの名無しさん
2020/04/23(木) 21:20:47.89ID:M8I+Acr1752デフォルトの名無しさん
2020/04/26(日) 18:05:24.10ID:FVxXRtXH 連番をつけるコードでまだ躓いています
hoge.txt
hogehoge.txt
を
hoge(1).txt
hogehoge(2).txt
としたいです
echo off & for %i in (*.txt) do (ren %i ???)
このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?
hoge.txt
hogehoge.txt
を
hoge(1).txt
hogehoge(2).txt
としたいです
echo off & for %i in (*.txt) do (ren %i ???)
このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?
753デフォルトの名無しさん
2020/04/26(日) 18:36:58.48ID:FVxXRtXH バッチでset /aなどのオプションがありますが、/aは計算を伴う場合に使うそうです。
この/aに意味はあるのですか?
何らかの単語の略だと覚えやすいんですが。
この/aに意味はあるのですか?
何らかの単語の略だと覚えやすいんですが。
754デフォルトの名無しさん
2020/04/26(日) 18:40:50.40ID:Pfsg7A5O その程度ぐぐれば出てくるでしょ
インデックスのカウント用変数が必要+変数の遅延展開
丸括弧のエスケープが必要
aはarithmeticの略
インデックスのカウント用変数が必要+変数の遅延展開
丸括弧のエスケープが必要
aはarithmeticの略
755デフォルトの名無しさん
2020/04/26(日) 20:15:42.23ID:cczyU4e/ @echo off & set n=1& chcp 65001 > nul
for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x "%%a%%"
goto :eof
:x
ren %1 "%~n1(%n%)%~x1" & set /a n+=1
for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x "%%a%%"
goto :eof
:x
ren %1 "%~n1(%n%)%~x1" & set /a n+=1
756デフォルトの名無しさん
2020/04/26(日) 22:00:20.95ID:zKIVBOto 1Point ノウハウ
dir ですべてのファイル、フォルダを表示したい場合は
dir /A
dir ですべてのファイル、フォルダを表示したい場合は
dir /A
757デフォルトの名無しさん
2020/04/26(日) 22:18:32.20ID:DxwpR+0O 普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの?
何か理由あるん?
何か理由あるん?
758デフォルトの名無しさん
2020/04/26(日) 22:22:15.53ID:YV1WqKFq >>757
ファイル名に「%」入ってるとマズくない?
ファイル名に「%」入ってるとマズくない?
759デフォルトの名無しさん
2020/04/28(火) 05:49:29.43ID:ceHl0duT シェルスクリプトってお手軽省略表記にこだわりすぎるあまり
エスケープ処理が複雑化しバグりやすくなって本末転倒だよな
エスケープ処理が複雑化しバグりやすくなって本末転倒だよな
760デフォルトの名無しさん
2020/04/28(火) 05:57:02.60ID:l2PF55i3 そんなところで躓く能なしは、他の言語で書いても同じだよ
761デフォルトの名無しさん
2020/04/28(火) 13:01:40.55ID:DKHJb1hS 他の言語でもエスケープは必要なことはあるし同じこと
ただbatのように自身を置換して逐次実行するするようなことは
eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ
ただbatのように自身を置換して逐次実行するするようなことは
eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ
762デフォルトの名無しさん
2020/04/28(火) 16:44:00.76ID:3RXW9/E3 要するに分かりにくい
ここで初心者にイロハから質問されてもレスがしにくい
リネームソフトでも使え
ここで初心者にイロハから質問されてもレスがしにくい
リネームソフトでも使え
763デフォルトの名無しさん
2020/04/28(火) 17:37:46.72ID:7TaGv6sC >>759
シェルスクリプトでエスケープ処理が複雑なんて
したことがないんだがどういうケース?
むしろバッチファイルのほうがややこしすぎる
バッチファイルでダブルクォートはいつつけるか言える?
スペースが含まれたファイル名とか
バッチファイルでこれの出力結果は
echo "C:\Program Files"
↓これです。(ダブルクォート含む)
"C:\Program Files"
シェルスクリプトでエスケープ処理が複雑なんて
したことがないんだがどういうケース?
むしろバッチファイルのほうがややこしすぎる
バッチファイルでダブルクォートはいつつけるか言える?
スペースが含まれたファイル名とか
バッチファイルでこれの出力結果は
echo "C:\Program Files"
↓これです。(ダブルクォート含む)
"C:\Program Files"
764デフォルトの名無しさん
2020/04/28(火) 18:05:03.26ID:3RXW9/E3 どういうケースって、すぐ上の奴だろ
765デフォルトの名無しさん
2020/04/28(火) 18:18:07.54ID:7TaGv6sC >>764
もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
766デフォルトの名無しさん
2020/04/28(火) 18:19:14.04ID:7TaGv6sC シェルスクリプトっていうのはUnixやLinuxの
/bin/shとかbashのことなんだが
/bin/shとかbashのことなんだが
767デフォルトの名無しさん
2020/04/28(火) 18:20:52.04ID:RB8xSOb3 ファイル数わからんけどリネームソフト使えば一分かからんで終了
768デフォルトの名無しさん
2020/04/28(火) 20:35:28.46ID:C/yTg51l769デフォルトの名無しさん
2020/04/28(火) 20:39:22.04ID:C/yTg51l ちなみにMS-DOSにはエスケープ文字なんて無い
770デフォルトの名無しさん
2020/04/28(火) 20:40:45.75ID:f4hk4dsD771デフォルトの名無しさん
2020/04/28(火) 20:51:25.37ID:l2PF55i3 >>770
頑張ってググってきたんだからほめてやれよ
頑張ってググってきたんだからほめてやれよ
772デフォルトの名無しさん
2020/04/28(火) 22:38:03.31ID:0mXw36Cx >>769
Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。
Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。
773デフォルトの名無しさん
2020/04/28(火) 23:55:09.09ID:3RXW9/E3 cmdはシェルだ。定義も糞もない
774デフォルトの名無しさん
2020/04/29(水) 00:05:03.59ID:kLiglYQz >>768
cmdじゃないじゃん
cmdじゃないじゃん
775デフォルトの名無しさん
2020/04/29(水) 06:34:57.98ID:bLWOmnfL UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ
shやbash=cmd
シェルスクリプト=バッチファイル
シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
shやbash=cmd
シェルスクリプト=バッチファイル
シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
776デフォルトの名無しさん
2020/04/29(水) 06:56:52.10ID:SXZJio07 とはいえ逆にunixでバッチがどうとか言うと違和感あるしな
>>766みたいな感覚が一般的
>>766みたいな感覚が一般的
777デフォルトの名無しさん
2020/04/29(水) 07:15:11.82ID:sus1L+2H >>775
> シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
シェアならLinuxのシェルスクリプトの方が多いよ
今はsystemdに置き換えられつつあるが、起動処理の多くで
シェルスクリプトが使われていた。
各アプリのビルドなどでもシェルスクリプトは使われている。
それに対してバッチファイルは殆ど使われていない。
そもそもWindowsのコマンドは、他のコマンドの出力を読み取って
別のコマンドで処理するように設計されていない
単に呼び出すだけ。だからバッチファイルという名前になってる
例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合
なにも表示されないのでスクリプトとして使いやすいが
Windowsのcopyは人間用のメッセージがいちいち出る
コマンドの出力を変数に入れるだけでも大変
遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる
そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を
するためだからバッチファイルはシェルスクリプトだけでなく
PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている
一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが
面倒になってるので両立してるシェルスクリプトにはかなわない
> シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
シェアならLinuxのシェルスクリプトの方が多いよ
今はsystemdに置き換えられつつあるが、起動処理の多くで
シェルスクリプトが使われていた。
各アプリのビルドなどでもシェルスクリプトは使われている。
それに対してバッチファイルは殆ど使われていない。
そもそもWindowsのコマンドは、他のコマンドの出力を読み取って
別のコマンドで処理するように設計されていない
単に呼び出すだけ。だからバッチファイルという名前になってる
例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合
なにも表示されないのでスクリプトとして使いやすいが
Windowsのcopyは人間用のメッセージがいちいち出る
コマンドの出力を変数に入れるだけでも大変
遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる
そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を
するためだからバッチファイルはシェルスクリプトだけでなく
PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている
一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが
面倒になってるので両立してるシェルスクリプトにはかなわない
778デフォルトの名無しさん
2020/04/29(水) 07:22:12.44ID:VzuV0Enx アスペがうだうだ言ってるだけで全く「会話」が進行していないな
779デフォルトの名無しさん
2020/04/29(水) 07:36:25.95ID:SXZJio07 スレチだから、もうやめろ
780デフォルトの名無しさん
2020/04/29(水) 07:51:09.96ID:sus1L+2H やなコッタ
781デフォルトの名無しさん
2020/04/29(水) 22:15:38.24ID:f6LPbIhG パンナコッタ
782デフォルトの名無しさん
2020/04/29(水) 22:43:10.94ID:sus1L+2H メロンパンナ
783デフォルトの名無しさん
2020/04/30(木) 00:25:02.17ID:6g7fIyNp マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢
784デフォルトの名無しさん
2020/04/30(木) 23:56:54.10ID:4NDFLh29 アッサムティー好き、いいよね
785デフォルトの名無しさん
2020/05/01(金) 20:45:42.45ID:I+dUmCMk カタコッタ
786デフォルトの名無しさん
2020/05/07(木) 18:46:37.87ID:jiFNKMfo 滅茶苦茶初歩的な質問ですまん
バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
787デフォルトの名無しさん
2020/05/07(木) 18:51:16.63ID:cw3NlGJG FOR /F ["オプション"] %変数 IN ('コマンド') DO コマンド [コマンド パラメーター]
または usebackq オプションの場合:
FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]
または usebackq オプションの場合:
FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]
788デフォルトの名無しさん
2020/05/07(木) 18:51:30.99ID:jiFNKMfo もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい
789デフォルトの名無しさん
2020/05/07(木) 19:01:03.56ID:jiFNKMfo790デフォルトの名無しさん
2020/05/07(木) 19:33:24.65ID:lct9jPsZ 昔だったら tail -f
791デフォルトの名無しさん
2020/05/07(木) 19:34:28.15ID:2gF3mugX792デフォルトの名無しさん
2020/05/07(木) 19:47:29.96ID:jiFNKMfo logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた
出力取得できたのでまあよし
出力取得できたのでまあよし
793デフォルトの名無しさん
2020/05/07(木) 20:17:47.30ID:2gF3mugX >>792
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "tokens=*" %%i in ('py test.py 2^>^&1') do (
set IN!n!=%%i
set /a n+=1
)
set /a n-=1
for /l %%i in (0,1,%n%) do (
echo.!IN%%i!
)
endlocal
@echo off
setlocal enabledelayedexpansion
set n=0
for /f "tokens=*" %%i in ('py test.py 2^>^&1') do (
set IN!n!=%%i
set /a n+=1
)
set /a n-=1
for /l %%i in (0,1,%n%) do (
echo.!IN%%i!
)
endlocal
794デフォルトの名無しさん
2020/05/12(火) 09:27:08.95ID:hWMQZbFi >コマンドプロンプト入門 Kindle版
2020年にこれを出すとはチャレンジャーすぎるな
2020年にこれを出すとはチャレンジャーすぎるな
795デフォルトの名無しさん
2020/05/12(火) 16:03:14.69ID:PeLhefIP amazonで、確認すると、2019/09の出版みたいですね。
どうせなら、power shellの本出したほうが良かったかも。
どうせなら、power shellの本出したほうが良かったかも。
796デフォルトの名無しさん
2020/05/12(火) 18:45:23.48ID:NJ7uTfC9 ファイル名に「b」を含むファイルをコピーするときに
たとえば
abc.txt というファイルがあって
copy *b*.txt def.txt
がオッケーで
copy *b* def.txt
がエラーなのはなぜですか?
*は0文字以上の文字列なので
両方とも成功すると思っていたのですが
たとえば
abc.txt というファイルがあって
copy *b*.txt def.txt
がオッケーで
copy *b* def.txt
がエラーなのはなぜですか?
*は0文字以上の文字列なので
両方とも成功すると思っていたのですが
797デフォルトの名無しさん
2020/05/12(火) 19:05:09.66ID:fhydWmjd >>795
KindleストアにPowerShellのがいっぱいあるやん
KindleストアにPowerShellのがいっぱいあるやん
798デフォルトの名無しさん
2020/05/12(火) 19:55:35.27ID:UaCqmgBQ799デフォルトの名無しさん
2020/05/12(火) 19:59:26.87ID:fhydWmjd *b* が一つでもゴミが付くしね(0x1A)
800デフォルトの名無しさん
2020/05/23(土) 20:41:18.51ID:H5g1ckea Windows Terminal で音を鳴らすにはどうすればいいですか
コマンドプロンプトではControl-Gを出力してたんですが
Windows Terminalでは無視してくれやがります
コマンドプロンプトではControl-Gを出力してたんですが
Windows Terminalでは無視してくれやがります
801デフォルトの名無しさん
2020/05/23(土) 22:23:07.24ID:105ldQbQ start beep.wav
802デフォルトの名無しさん
2020/05/23(土) 22:45:59.81ID:H5g1ckea そんなんだったら
>copy con beep.cmd
echo ^G
waitfor /T 3 waiting
^Z
1 個のファイルをコピーしました。
>start /min cmd /d/c beep.cmd
とするけどもっといい手はないかなと
>copy con beep.cmd
echo ^G
waitfor /T 3 waiting
^Z
1 個のファイルをコピーしました。
>start /min cmd /d/c beep.cmd
とするけどもっといい手はないかなと
803デフォルトの名無しさん
2020/05/23(土) 23:00:15.85ID:H5g1ckea ああstartで自分を呼んで鳴らせばいいんだ
自己解決しました
自己解決しました
804デフォルトの名無しさん
2020/05/24(日) 00:25:04.68ID:VYuvM9gt805デフォルトの名無しさん
2020/05/24(日) 00:40:12.55ID:f4O9jhZ+ その手がWindows Terminalでは使えないって話
https://aka.ms/terminal-documentation
Windows ターミナルの概要 | Microsoft Docs
https://aka.ms/terminal-documentation
Windows ターミナルの概要 | Microsoft Docs
806デフォルトの名無しさん
2020/05/24(日) 00:46:46.59ID:VYuvM9gt807デフォルトの名無しさん
2020/06/03(水) 20:30:01.66ID:HabAm56l バッチでやるような処理でも
勉強兼ねてpowershell使って処理するようにしたほうがいいですか?
勉強兼ねてpowershell使って処理するようにしたほうがいいですか?
808デフォルトの名無しさん
2020/06/03(水) 20:31:25.42ID:5eIQQTQm 勉強でなら、そりゃそうだろと言うしかないね
809デフォルトの名無しさん
2020/06/03(水) 20:32:34.71ID:HabAm56l 実務上はどうです?
バッチの方が情報多いからいいんですか?
バッチの方が情報多いからいいんですか?
810デフォルトの名無しさん
2020/06/03(水) 21:04:50.01ID:mm84GRB0 >>809
どういう現場か知らないけど
Widn7 SP1 PSv2 縛り
なんて現場でPS書きたいとか思わないね。
使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。
どういう現場か知らないけど
Widn7 SP1 PSv2 縛り
なんて現場でPS書きたいとか思わないね。
使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。
811デフォルトの名無しさん
2020/06/03(水) 21:27:53.38ID:QZ+HyrOs シコシコかくのよ
812デフォルトの名無しさん
2020/06/03(水) 22:11:19.84ID:JNM2fzED PSでできること=C#でできることだからバッチとは全然できることが違うよ
PSv2でも十分バッチとは天地の差がある
PSv2でも十分バッチとは天地の差がある
813デフォルトの名無しさん
2020/06/03(水) 22:22:36.62ID:5eIQQTQm 元の質問が、「バッチでやるような処理でも」なんだけどな
ちゃんと読んでるか?
ちゃんと読んでるか?
814デフォルトの名無しさん
2020/06/03(水) 23:24:38.53ID:Gm6SBE/O >>809
情報量ならPowerShellの方が上だし
TechnetフォーラムならPowerShellのカテゴリーあるし
ポケットリファレンスの著者である牟田口大介まで出没している
ストアアプリのインストールとかはPowerShell必須だし
バッチのみじゃ書けない物も割と多い
処理の内容は忘れたけどバッチでやれた事を
PowerShellで書いたらキー入力を要求されて
かえってバッチの方が良かった場合もあるけど
そんなパターンは圧倒的に少ないと思う
でもウチの場合、PowerShell使いがいないから
というのが最大の理由で実務はバッチだらけ
良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき
個人の感想ならばPowerShellって
バージョンが上がって非互換が出そうなので避けたい
情報量ならPowerShellの方が上だし
TechnetフォーラムならPowerShellのカテゴリーあるし
ポケットリファレンスの著者である牟田口大介まで出没している
ストアアプリのインストールとかはPowerShell必須だし
バッチのみじゃ書けない物も割と多い
処理の内容は忘れたけどバッチでやれた事を
PowerShellで書いたらキー入力を要求されて
かえってバッチの方が良かった場合もあるけど
そんなパターンは圧倒的に少ないと思う
でもウチの場合、PowerShell使いがいないから
というのが最大の理由で実務はバッチだらけ
良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき
個人の感想ならばPowerShellって
バージョンが上がって非互換が出そうなので避けたい
815デフォルトの名無しさん
2020/06/04(木) 09:41:35.56ID:Di3Z81qX 9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ
意識していれば、バッチファイルの利用は難しくないと思う。
VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ
気をつけていれば概ね大丈夫だと思う。
それらに比べてPowerShellは、個人的にはハードルが極めて高い。
意識していれば、バッチファイルの利用は難しくないと思う。
VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ
気をつけていれば概ね大丈夫だと思う。
それらに比べてPowerShellは、個人的にはハードルが極めて高い。
816デフォルトの名無しさん
2020/06/04(木) 15:05:12.56ID:iofqxoab817デフォルトの名無しさん
2020/06/04(木) 15:12:12.70ID:iofqxoab >>814
PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ
PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ
818デフォルトの名無しさん
2020/06/04(木) 15:16:33.10ID:efimIni8 BATの典型的なものとしては
シーケンシャルに
・外部アプリ呼び出し
・ファイルコピーや移動
・メッセージ表示
であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる
シーケンシャルに
・外部アプリ呼び出し
・ファイルコピーや移動
・メッセージ表示
であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる
819デフォルトの名無しさん
2020/06/04(木) 21:18:27.58ID:U7KCPoET PSの話したいなら該当スレへ
ここでするのはスレチ
ここでするのはスレチ
820デフォルトの名無しさん
2020/06/05(金) 09:26:58.17ID:YNSaAEsR バッチファイル内で、複数の文字列の一部だけを羅列して、それをまとめて補完したものを変数に入れたい
具体的には
set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat %LOG%\newsplus\*.dat ...
のように指定するのではなく
setlocal enabledelayed...
for %%f in (tech prog win newsplus) do (
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
)
のようにして、増減や修正を簡単に出来るようにしたい
したいんだけど、なんかうまく動いてくれない
何かヒントもらえますか?
具体的には
set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat %LOG%\newsplus\*.dat ...
のように指定するのではなく
setlocal enabledelayed...
for %%f in (tech prog win newsplus) do (
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
)
のようにして、増減や修正を簡単に出来るようにしたい
したいんだけど、なんかうまく動いてくれない
何かヒントもらえますか?
821デフォルトの名無しさん
2020/06/05(金) 10:14:13.82ID:YNSaAEsR 自己解決
どうやらこんな感じで動きそう
for %%f in (tech prog win newsplus) do (
call :APPEND %%f
)
:APPEND
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
goto :EOF
どうやらこんな感じで動きそう
for %%f in (tech prog win newsplus) do (
call :APPEND %%f
)
:APPEND
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
goto :EOF
822デフォルトの名無しさん
2020/06/05(金) 11:33:35.77ID:xkF+o6Lc >>820
setlocal enabledelayedexpansion
for %%f in (tech prog win newsplus) do (
set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
)
じゃダメなの?
setlocal enabledelayedexpansion
for %%f in (tech prog win newsplus) do (
set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
)
じゃダメなの?
823デフォルトの名無しさん
2020/06/05(金) 11:53:35.34ID:YNSaAEsR あれ?出来ますね
実は!で囲むのもやってみた(つもりだった)んだけど
(たぶん、どっか別のちょっとしたところでミスしてて)
その時はうまく動かなかったんですね
失礼しました
実は!で囲むのもやってみた(つもりだった)んだけど
(たぶん、どっか別のちょっとしたところでミスしてて)
その時はうまく動かなかったんですね
失礼しました
824810
2020/06/06(土) 00:36:10.94ID:ZNTMwsEj >>817
業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。
PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。
core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。
また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。
おまけにバッチとWSHはもう仕様変更が無いという強みがある。
等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。
業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。
PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。
core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。
また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。
おまけにバッチとWSHはもう仕様変更が無いという強みがある。
等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。
825デフォルトの名無しさん
2020/06/09(火) 07:37:38.68ID:xQo5RGeQ 長々と更新してもcmd変わらず放置
不具合あればPS使えということか
バッチに未来は無い
不具合あればPS使えということか
バッチに未来は無い
826デフォルトの名無しさん
2020/06/09(火) 21:59:44.80ID:Phlj4K/L cmdはもう更新しないってアナウンス出てなかったっけ?
827デフォルトの名無しさん
2020/06/09(火) 22:16:29.17ID:aAgqnyde バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし
現状維持でこのまま使えたらそれでいいよ
現状維持でこのまま使えたらそれでいいよ
828デフォルトの名無しさん
2020/06/14(日) 08:05:01.57ID:Nip9LUw0 教えてください。
引数以外でショートカットの情報をバッチに渡すことはできますか?
バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、
ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
引数以外でショートカットの情報をバッチに渡すことはできますか?
バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、
ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
829デフォルトの名無しさん
2020/06/14(日) 10:09:40.34ID:Rvue1P4U ショートカットって何の?起動したバッチファイルのもの?
ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも
どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな
ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも
どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな
830デフォルトの名無しさん
2020/06/14(日) 10:41:39.28ID:Nip9LUw0 >>829
やっぱり無理そうですね。
ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、
%0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。
何か方法ないのかなと思い、、あきらめます。
ご回答ありがとうございます。
やっぱり無理そうですね。
ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、
%0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。
何か方法ないのかなと思い、、あきらめます。
ご回答ありがとうございます。
831デフォルトの名無しさん
2020/06/14(日) 11:24:19.06ID:2FaHAA2B ショートカットのプロパティで作業フォルダを弄ればいいだろ。
リンク先のバッチで%cd%参照。
ファイル名なんてリンク先に合わせりゃいいだろ。
リンク先のバッチで%cd%参照。
ファイル名なんてリンク先に合わせりゃいいだろ。
832デフォルトの名無しさん
2020/06/14(日) 11:26:00.19ID:Q6c7IGAp833デフォルトの名無しさん
2020/06/14(日) 11:45:22.44ID:2FaHAA2B プロパティのリンク先に自分のフルパスを追加してもいい
リンク先のバッチで%1参照。
リンク先のバッチで%1参照。
834デフォルトの名無しさん
2020/06/14(日) 12:14:20.27ID:Nip9LUw0835デフォルトの名無しさん
2020/06/14(日) 12:15:45.60ID:Nip9LUw0836デフォルトの名無しさん
2020/06/14(日) 12:16:13.25ID:Rvue1P4U ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの?
ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど
ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど
837デフォルトの名無しさん
2020/06/14(日) 12:17:49.77ID:Nip9LUw0838デフォルトの名無しさん
2020/06/14(日) 12:18:03.34ID:2FaHAA2B 作業フォルダを空欄にするだけなんだけど
839デフォルトの名無しさん
2020/06/14(日) 12:20:20.62ID:Nip9LUw0840デフォルトの名無しさん
2020/06/14(日) 12:25:13.85ID:Nip9LUw0 ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました。
ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。
みなさんおつきあい頂きありがとうございます。
ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。
みなさんおつきあい頂きありがとうございます。
841デフォルトの名無しさん
2020/06/14(日) 12:32:21.09ID:Rvue1P4U842デフォルトの名無しさん
2020/06/14(日) 12:47:38.30ID:zWNqxiy9 別フォルダにコピーする時点で親フォルダ分かってるんじゃない?
843デフォルトの名無しさん
2020/06/14(日) 19:57:43.39ID:Nip9LUw0 >>841
おおお、なるほど!
StartInを指定しなければ、CurrentDirectoryは移動しないのか。
リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。
感謝!!
VBAのApplication.Callerみたいなのが書ければいいんですけどね。
おおお、なるほど!
StartInを指定しなければ、CurrentDirectoryは移動しないのか。
リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。
感謝!!
VBAのApplication.Callerみたいなのが書ければいいんですけどね。
844デフォルトの名無しさん
2020/06/14(日) 20:09:16.72ID:2FaHAA2B 作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな。
あと、管理者権限で実行したらC:\WINDOWS\system32になったりする
あと、管理者権限で実行したらC:\WINDOWS\system32になったりする
845デフォルトの名無しさん
2020/06/14(日) 20:15:00.02ID:Nip9LUw0 >>844
そうなりますね。気をつけます。
そうなりますね。気をつけます。
846デフォルトの名無しさん
2020/06/14(日) 21:58:02.09ID:Nip9LUw0 すみません。もう1つ質問です。
バッチ自身を最小化して起動するときどうされてますか?
これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。
サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。
普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、
うまい方法があれば教えてください。
バッチ自身を最小化して起動するときどうされてますか?
これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。
サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。
普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、
うまい方法があれば教えてください。
847デフォルトの名無しさん
2020/06/15(月) 14:19:29.38ID:YYrFY+5A 無い
848デフォルトの名無しさん
2020/06/15(月) 19:14:00.08ID:X3dRtIQ2 >>847
了解!
了解!
849デフォルトの名無しさん
2020/06/15(月) 19:21:32.94ID:bzzr0fEY start
850デフォルトの名無しさん
2020/06/15(月) 21:31:09.57ID:xZsc1Mf0 pause
851デフォルトの名無しさん
2020/06/16(火) 06:44:47.17ID:zfRgO9so PowerShell なら、
# ショートカットファイルのフルパス
$fn = "フルパス"
# ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る
$link = $wsh.CreateShortcut( $fn )
# 画面に表示する
Write-Host "$( $fn )`nTargetFile: $( $link.TargetPath )"
# ショートカットファイルのフルパス
$fn = "フルパス"
# ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る
$link = $wsh.CreateShortcut( $fn )
# 画面に表示する
Write-Host "$( $fn )`nTargetFile: $( $link.TargetPath )"
852851
2020/06/16(火) 06:47:46.73ID:zfRgO9so853デフォルトの名無しさん
2020/06/16(火) 09:13:19.74ID:n71ojSL1 wsh呼び出すならvbsでも使えばいいわけで…
854デフォルトの名無しさん
2020/06/16(火) 15:49:55.53ID:0FicG8jZ リンク先バッチ本体をコピーしたらあかんの?
855デフォルトの名無しさん
2020/06/16(火) 16:06:26.98ID:0FicG8jZ 動的に変化するのか?
856デフォルトの名無しさん
2020/06/16(火) 22:29:49.48ID:woSalLPH >>851
あれ、まだ続いてましたね。
えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。
結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、
.Lnkのファイル名を取得する手段はない、と認識しました。
もしかして、PowerShellなら取得できますか?
あれ、まだ続いてましたね。
えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。
結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、
.Lnkのファイル名を取得する手段はない、と認識しました。
もしかして、PowerShellなら取得できますか?
857デフォルトの名無しさん
2020/06/16(火) 22:38:20.68ID:woSalLPH >>854
Batchを複製すればできますね。
でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。
ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。
(現時点、これで代用してます)
でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。
で、バッチを最小化で生起動する方法は、、無い!という結論です。
というところで諦めています。
Batchを複製すればできますね。
でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。
ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。
(現時点、これで代用してます)
でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。
で、バッチを最小化で生起動する方法は、、無い!という結論です。
というところで諦めています。
858デフォルトの名無しさん
2020/06/16(火) 23:14:22.53ID:yH2E1+y3 おまえ要領を得ないって良く言われるだろ
何を最小化したいの?コンソール画面?バッチから起動したアプリ?
アプリ起動にバッチを介するようになって困っているようだけど
コンソールはすぐ消えるから大して困らんでしょ
その一瞬も困るってこと?
コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
アプリならstart /min
そのバッチを貼れない理由でもあるの?
何を最小化したいの?コンソール画面?バッチから起動したアプリ?
アプリ起動にバッチを介するようになって困っているようだけど
コンソールはすぐ消えるから大して困らんでしょ
その一瞬も困るってこと?
コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
アプリならstart /min
そのバッチを貼れない理由でもあるの?
859デフォルトの名無しさん
2020/06/16(火) 23:24:30.52ID:C/0BZ8DU そんなへんなことするようなものは俺なら要らんと言うな
説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う
説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う
860デフォルトの名無しさん
2020/06/16(火) 23:48:59.36ID:zfRgO9so 漏れなんか、ダブルクリックで、Ruby スクリプトを実行するために、
test.vbs に、起動部分だけを書いてる
CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
test.vbs に、起動部分だけを書いてる
CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
861デフォルトの名無しさん
2020/06/17(水) 02:23:38.88ID:1C8hVY+b もうやめろ。くだらねえ
862デフォルトの名無しさん
2020/06/17(水) 03:27:41.75ID:pABU+G65 だから結論はでた、諦めてると言ってるだろ。
返してくれた方がいたので返答しただけ。
ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。
はい、本件Close。
有用な情報提供いただいた皆さんありがとう。
返してくれた方がいたので返答しただけ。
ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。
はい、本件Close。
有用な情報提供いただいた皆さんありがとう。
863デフォルトの名無しさん
2020/06/17(水) 07:10:17.14ID:jbUYdqRV よくわからんけど start /b /min を使うのではだめなのかしら
と独り言
と独り言
864デフォルトの名無しさん
2020/06/17(水) 08:16:21.96ID:tu0J1xQb >>863
/bスイッチって何でしたっけ?
/bスイッチって何でしたっけ?
865デフォルトの名無しさん
2020/06/18(木) 03:29:25.23ID:00is865e866デフォルトの名無しさん
2020/06/18(木) 07:09:08.15ID:EpKOfb9E867デフォルトの名無しさん
2020/06/18(木) 15:00:22.59ID:L9lBZl+g そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな
868デフォルトの名無しさん
2020/06/18(木) 20:51:24.52ID:sqKtSFf3 ここまでの流れで誰も配布するなんて話してないのにお前は何を言ってるんだ?
866の好きにさせとけよ
866の好きにさせとけよ
869デフォルトの名無しさん
2020/06/18(木) 22:53:59.19ID:EpKOfb9E870デフォルトの名無しさん
2020/06/19(金) 00:05:08.15ID:HgOFevSP クローズしたそうだが
コンソール画面を見たくないのなら
レイアウトの位置を右下に詰めろ。
ほとんど見えなくなるぞ
コンソール画面を見たくないのなら
レイアウトの位置を右下に詰めろ。
ほとんど見えなくなるぞ
871デフォルトの名無しさん
2020/06/19(金) 00:27:18.52ID:TPV7TWbz 殆どじゃダメなんだよ
神経質な奴に見つけられてしまう
神経質な奴に見つけられてしまう
872デフォルトの名無しさん
2020/06/19(金) 00:33:46.55ID:HgOFevSP お前、質問者か?
873デフォルトの名無しさん
2020/06/19(金) 03:17:24.40ID:7A38Sw4m テキストファイルから空行を除く方法
findstr /R .
ただし空白やタブのある空行は失敗
findstr /R .
ただし空白やタブのある空行は失敗
874デフォルトの名無しさん
2020/06/19(金) 05:11:07.46ID:HgOFevSP >>873
タブやスペースだけの行をスキップするには
findstr /r /c:"[^ ]"
^と]の間にタブとスペース入力
バッチではエディタでタブ入力できるが
コマンドプロンプトでタブ入力するには cmd /f:off で
タブやスペースだけの行をスキップするには
findstr /r /c:"[^ ]"
^と]の間にタブとスペース入力
バッチではエディタでタブ入力できるが
コマンドプロンプトでタブ入力するには cmd /f:off で
875デフォルトの名無しさん
2020/06/19(金) 05:34:11.61ID:HgOFevSP for〜do〜echoでやった方がいいかも
876デフォルトの名無しさん
2020/06/27(土) 20:08:23.94ID:dZCme2QN テキストファイルに入ってる文字列を
一行ごとに読み込んで
フォルダを作るバッチをつくったのですが
半角スペースの文字列が分割されてしまいます
これって対応策ありますか?
一行ごとに読み込んで
フォルダを作るバッチをつくったのですが
半角スペースの文字列が分割されてしまいます
これって対応策ありますか?
877デフォルトの名無しさん
2020/06/27(土) 20:23:13.74ID:7ozUCHmg >>876
for /f "tokens=*" %%i in (data.txt) do md "%%~i"
for /f "tokens=*" %%i in (data.txt) do md "%%~i"
878デフォルトの名無しさん
2020/06/28(日) 21:21:38.87ID:elMokmc1879デフォルトの名無しさん
2020/06/30(火) 15:01:18.03ID:SwuJ9TNP ファイル名全角英字の大文字小文字を同じとみなしていた
A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった
Aaは全角英字
芸が細かい、いいか悪いかは別として
A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった
Aaは全角英字
芸が細かい、いいか悪いかは別として
880デフォルトの名無しさん
2020/06/30(火) 19:03:57.21ID:PSeL/c0z ワイルドカードの ? の仕様がイマイチ分からない
abc と abc1 のファイルがあったとして
>dir /b abc?
abc
abc1
>dir /b ?abc
ファイルが見つかりません
>dir /b a?bc
ファイルが見つかりません
なぜ見つからないのか
1ないし0個の文字じゃないのか
abc と abc1 のファイルがあったとして
>dir /b abc?
abc
abc1
>dir /b ?abc
ファイルが見つかりません
>dir /b a?bc
ファイルが見つかりません
なぜ見つからないのか
1ないし0個の文字じゃないのか
881デフォルトの名無しさん
2020/06/30(火) 19:07:42.99ID:/pl8PJcc ワイルドカードで?は任意の1文字を示す
882デフォルトの名無しさん
2020/06/30(火) 19:14:29.14ID:PSeL/c0z では abc? で abc が一致するのはなぜ
883デフォルトの名無しさん
2020/06/30(火) 19:19:02.81ID:/pl8PJcc abc.でマッチするからだと思う
884デフォルトの名無しさん
2020/06/30(火) 19:21:41.87ID:PSeL/c0z なるほど。ありがとう
885デフォルトの名無しさん
2020/06/30(火) 19:28:18.05ID:PSeL/c0z abc?? や abc??? でも一致するようだ
886デフォルトの名無しさん
2020/06/30(火) 19:49:40.78ID:tIigavUn887デフォルトの名無しさん
2020/06/30(火) 19:59:31.31ID:PSeL/c0z abc??.?? とかも一致するね。たぶん仕様というよりバグ
888デフォルトの名無しさん
2020/06/30(火) 21:39:19.92ID:clO9Gt1K ピリオドが絡むとワイルドカードはおかしな動きするよ。
filename_yyyy.mm.dd.dat
みたいなもんが
dir *_????.??.??.dat
で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。
filename_yyyy-mm-dd.dat
として
dir *_????-??-??.dat
だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。
filename_yyyy.mm.dd.dat
みたいなもんが
dir *_????.??.??.dat
で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。
filename_yyyy-mm-dd.dat
として
dir *_????-??-??.dat
だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。
889デフォルトの名無しさん
2020/07/01(水) 07:22:43.96ID:sbIkpZ+y ワイルドカードは色々とおかしい
>echo > "abc" & echo > " abc"
>for %i in ("abc*") do @echo "%i"
"abc"
" abc"
>echo > "abc" & echo > " abc"
>for %i in ("abc*") do @echo "%i"
"abc"
" abc"
890デフォルトの名無しさん
2020/07/01(水) 07:57:25.88ID:9hqgfVHi そっちはたぶん8.3形式が引っかかってるんだろう
891デフォルトの名無しさん
2020/07/04(土) 22:02:55.18ID:r0U5W+Xd PC初心者です。
初めてバッチファイルの作成にチャレンジしています。
ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。
コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。
これはなぜでしょうか?回避方法はありますか?
初めてバッチファイルの作成にチャレンジしています。
ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。
コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。
これはなぜでしょうか?回避方法はありますか?
892デフォルトの名無しさん
2020/07/04(土) 22:37:12.45ID:KIcU78VY >>891
ggrks
ggrks
893デフォルトの名無しさん
2020/07/04(土) 22:39:29.92ID:QUXtQ3do たぶん、A ファイルがあって、それを上書きする時に、
安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、
正常に上書きした後に、Recovery内のA を削除している
ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう
安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、
正常に上書きした後に、Recovery内のA を削除している
ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう
895デフォルトの名無しさん
2020/07/05(日) 15:06:46.22ID:1amJ61U+896891
2020/07/07(火) 00:32:35.56ID:TndHy5rX897デフォルトの名無しさん
2020/07/08(水) 04:28:57.30ID:lPT19RKJ 超初歩的な質問いいですか?
@https://i.imgur.com/hyYJbJE.png
Ahttps://i.imgur.com/REf3PXQ.png
Bhttps://i.imgur.com/UIqO0ye.png
@のCというフォルダを中にある1.txt 2.txtごとAにコピーしてBのようにしたい時、どう入力したらいいですか?
すでにBのような状態にある時もコピーして上書きしたいのですが
ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので
@https://i.imgur.com/hyYJbJE.png
Ahttps://i.imgur.com/REf3PXQ.png
Bhttps://i.imgur.com/UIqO0ye.png
@のCというフォルダを中にある1.txt 2.txtごとAにコピーしてBのようにしたい時、どう入力したらいいですか?
すでにBのような状態にある時もコピーして上書きしたいのですが
ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので
898デフォルトの名無しさん
2020/07/08(水) 04:57:01.58ID:xPuqy2ih899デフォルトの名無しさん
2020/07/08(水) 05:13:48.40ID:H59ZusVp >>897
普通にcopy使えよ
普通にcopy使えよ
900デフォルトの名無しさん
2020/07/08(水) 05:29:09.34ID:plYM8yLW >>897
要件はそれだけか?
メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり
それはコピー対象/対象外だとか無いの?
\Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ
A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること
mkdir C\Users\a\Desktop\B\V\C
copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C
xcopyを使うなら
xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C
又は
xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
要件はそれだけか?
メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり
それはコピー対象/対象外だとか無いの?
\Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ
A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること
mkdir C\Users\a\Desktop\B\V\C
copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C
xcopyを使うなら
xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C
又は
xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
901デフォルトの名無しさん
2020/07/08(水) 05:44:34.05ID:lPT19RKJ902デフォルトの名無しさん
2020/07/08(水) 11:29:53.61ID:Z8A6jaoN xcopy よりは、robocopy を使った方が良いのでは?
xcopyは、あまり見ない
xcopyは、あまり見ない
903デフォルトの名無しさん
2020/07/08(水) 12:24:18.71ID:lp5P2pBO dosで使えなくなるだろ
904デフォルトの名無しさん
2020/07/08(水) 12:46:00.57ID:Lb+zauke たしかに、DOSは、Xcopyまでだったか。
pureDOSには、robocopyはないのだな。
pureDOSには、robocopyはないのだな。
905デフォルトの名無しさん
2020/07/08(水) 12:56:46.06ID:plYM8yLW robocopyは絶望的に遅い
複雑な条件がないのならxcopyがいい
複雑な条件がないのならxcopyがいい
906デフォルトの名無しさん
2020/07/08(水) 15:01:55.81ID:z330e5aM robocopyは、ミラーリングで使用したときに、
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。
907デフォルトの名無しさん
2020/07/08(水) 18:21:45.08ID:ebRsk5Wi ま?
908895
2020/07/08(水) 19:29:53.78ID:fFkGRU4d >>896
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ。
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ。
909デフォルトの名無しさん
2020/07/09(木) 01:19:26.67ID:oG8bZA2s http://itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している
910デフォルトの名無しさん
2020/07/09(木) 02:32:11.02ID:zMPqHoYq >>909
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
911デフォルトの名無しさん
2020/07/09(木) 04:53:54.78ID:gEWbrPAM Ruby で作った。
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.txt"
num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする
.reverse # 更新時刻の新しい順へ、逆転
.drop( num ) # 新しいものから、num個を処理しない
.each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除
表示
rm C:/Users/Owner/Documents/a.txt
rm C:/Users/Owner/Documents/b.txt
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.txt"
num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする
.reverse # 更新時刻の新しい順へ、逆転
.drop( num ) # 新しいものから、num個を処理しない
.each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除
表示
rm C:/Users/Owner/Documents/a.txt
rm C:/Users/Owner/Documents/b.txt
912デフォルトの名無しさん
2020/07/09(木) 06:30:12.62ID:o2t2WZIU rubyなんて論外、PowerShellですらギリアウト
ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合
カレントフォルダの *.txt の最新3個以外をリストアップするには
gi *.txt | sort LastWriteTime -Descending | select -Skip 3
削除までやるなら
gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri
エイリアスを使わずに書くと
Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合
カレントフォルダの *.txt の最新3個以外をリストアップするには
gi *.txt | sort LastWriteTime -Descending | select -Skip 3
削除までやるなら
gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri
エイリアスを使わずに書くと
Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
913デフォルトの名無しさん
2020/07/09(木) 06:31:35.37ID:o2t2WZIU ああ LastAccessTimeじゃくてLastWriteTime
914デフォルトの名無しさん
2020/07/09(木) 13:30:39.43ID:oG8bZA2s >>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
915デフォルトの名無しさん
2020/07/09(木) 16:17:08.38ID:t1UM8kjV >>914
ファイル名に相当する箇所をクオート
ファイル名に相当する箇所をクオート
916デフォルトの名無しさん
2020/07/15(水) 06:27:24.24ID:pJbYwVEp https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
917デフォルトの名無しさん
2020/07/15(水) 06:51:32.91ID:73kyB1S/ Arithmetic
918デフォルトの名無しさん
2020/07/15(水) 15:46:16.46ID:nRIpdjFe if 感染者数==0 (
goto campaign
) else (
goto campaign
)
goto campaign
) else (
goto campaign
)
919デフォルトの名無しさん
2020/07/15(水) 21:08:21.69ID:NpGOzuTH w
920デフォルトの名無しさん
2020/07/15(水) 22:58:28.42ID:SqApoBlS921デフォルトの名無しさん
2020/07/15(水) 23:48:35.91ID:vc+VU4Sj >>917 が教えてくれてるよ
922デフォルトの名無しさん
2020/07/15(水) 23:53:31.66ID:SqApoBlS >>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
923デフォルトの名無しさん
2020/07/16(木) 00:26:22.36ID:3qBZIgLF /a は 単純に answer かな
924デフォルトの名無しさん
2020/07/16(木) 05:41:06.12ID:smyagw08925デフォルトの名無しさん
2020/07/16(木) 11:47:24.17ID:lU9BoPI+ 以降あいうえお作文スレ
926デフォルトの名無しさん
2020/07/16(木) 13:33:25.11ID:d6//+ANU Arithmeticって+-*/のことじゃないの?
927デフォルトの名無しさん
2020/07/17(金) 00:25:33.43ID:C6Q8EyYV +とか-はarithmetic operatorだね
928デフォルトの名無しさん
2020/07/18(土) 01:59:17.03ID:6qVTTMhl 大体は理想通りに出来たのですが時々不要なpathをremで無効にするとstartコマンドがなぜかC:\hoge\を開いてしまうので回避できないでしょうか?
バッチ初心者なので汚いのはご容赦下さい
SET TARGET_EXE1=C:\hoge\hoge.bat
SET TARGET_EXE2=C:\hoge\huge.lnk
rem SET TARGET_EXE3=C:\hoge\hege.exe
for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%")
timeout /t 8 > NUL
exit 0
:F_NM
echo %~nx1
START "" %1
goto :EOF
バッチ初心者なので汚いのはご容赦下さい
SET TARGET_EXE1=C:\hoge\hoge.bat
SET TARGET_EXE2=C:\hoge\huge.lnk
rem SET TARGET_EXE3=C:\hoge\hege.exe
for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%")
timeout /t 8 > NUL
exit 0
:F_NM
echo %~nx1
START "" %1
goto :EOF
929デフォルトの名無しさん
2020/07/18(土) 05:56:42.11ID:mgWYGhz7 if not "%~1"=="" START "" %1
930デフォルトの名無しさん
2020/07/18(土) 08:09:21.26ID:ddPranTH if exist "%~1" start "" "%~1"
931デフォルトの名無しさん
2020/07/18(土) 08:50:03.50ID:ddPranTH for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")
932デフォルトの名無しさん
2020/07/18(土) 14:36:51.45ID:4sfyyT7O933デフォルトの名無しさん
2020/07/18(土) 15:31:48.20ID:GUFQRDdz >>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
934デフォルトの名無しさん
2020/07/18(土) 15:40:41.02ID:VVrReUQE start /?
最初のは "タイトル"
最初のは "タイトル"
935デフォルトの名無しさん
2020/07/18(土) 19:10:23.40ID:mgWYGhz7936デフォルトの名無しさん
2020/07/18(土) 20:08:37.75ID:xxg3trOa "" START ""
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね
937デフォルトの名無しさん
2020/07/19(日) 00:01:19.79ID:nPfUu10f938デフォルトの名無しさん
2020/07/19(日) 00:15:51.03ID:nmSNkapE >>936
完全にこれでしたすみません
完全にこれでしたすみません
939デフォルトの名無しさん
2020/07/31(金) 20:28:20.67ID:uhGaPqk6 面白い書き方見付けた
c:\APP\DoeView>popd
c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:34.70 [pushd:ok]
c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:38.48 [pushd:fail]
c:\APP\DoeView>popd
c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:34.70 [pushd:ok]
c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:38.48 [pushd:fail]
940デフォルトの名無しさん
2020/08/01(土) 00:13:59.61ID:oGghCVi0 >>939
解説お願いします
解説お願いします
941デフォルトの名無しさん
2020/08/01(土) 01:53:16.42ID:mxUlZpQQ 他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
…
goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
…
goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?
942デフォルトの名無しさん
2020/08/01(土) 06:07:29.27ID:hnL660kY 他のとやらが標準出力読めるなら
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
943デフォルトの名無しさん
2020/08/01(土) 10:06:48.10ID:KdkXblI6 >>939
なるほど
set /p<nul=%date%%time% [pushd:
と
@pushd doeview >nul 2>&1 && echo ok]||echo fail]
を & でつないだという訳か。で前半を普通の順番に書き直すと
set /p =%date%%time% [pushd:<nul
で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。
後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
なるほど
set /p<nul=%date%%time% [pushd:
と
@pushd doeview >nul 2>&1 && echo ok]||echo fail]
を & でつないだという訳か。で前半を普通の順番に書き直すと
set /p =%date%%time% [pushd:<nul
で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。
後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
944デフォルトの名無しさん
2020/08/01(土) 15:48:10.34ID:mxUlZpQQ945デフォルトの名無しさん
2020/08/01(土) 16:20:21.81ID:hnL660kY copy nul $tmp.txt
hoge.exe >>$tmp.txt
for /f "delims=" %%a in ($tmp.txt) do (
if "%%a"=="コマンド1" (処理1 &echo 結果1)
if "%%a"=="コマンド2" (処理2 &echo 結果2)
…
)
こういう風に一旦txtに書き出しじゃダメなん?
hoge.exe >>$tmp.txt
for /f "delims=" %%a in ($tmp.txt) do (
if "%%a"=="コマンド1" (処理1 &echo 結果1)
if "%%a"=="コマンド2" (処理2 &echo 結果2)
…
)
こういう風に一旦txtに書き出しじゃダメなん?
946デフォルトの名無しさん
2020/08/01(土) 17:49:00.41ID:y/Re9bvj >>944
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも
947デフォルトの名無しさん
2020/08/01(土) 23:16:08.23ID:mxUlZpQQ どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。
将棋所
http://shogidokoro.starfree.jp/index.html
USIプロトコル
http://shogidokoro.starfree.jp/usi.html
USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…
>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどうすれば良いのか…
将棋所
http://shogidokoro.starfree.jp/index.html
USIプロトコル
http://shogidokoro.starfree.jp/usi.html
USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…
>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどうすれば良いのか…
948デフォルトの名無しさん
2020/08/02(日) 00:01:49.63ID:SCuZm8dn >エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
949デフォルトの名無しさん
2020/08/02(日) 00:12:10.36ID:SCuZm8dn > setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
951デフォルトの名無しさん
2020/08/07(金) 17:37:19.06ID:ztGuRGFM フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです
これを
フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2
こうしたいです
ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2
フォルダ名が重複した場合の処理も必要かもしれないです
バッチは読みにくすぎですね
これを
フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2
こうしたいです
ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2
フォルダ名が重複した場合の処理も必要かもしれないです
バッチは読みにくすぎですね
952デフォルトの名無しさん
2020/08/07(金) 22:11:16.88ID:wnzPeWR5 >>951
そもそもツリー表現が変だと思う。
├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
├ファイル1
└ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
そもそもツリー表現が変だと思う。
├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
├ファイル1
└ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
953デフォルトの名無しさん
2020/08/07(金) 22:17:23.17ID:5wWI/sIC954デフォルトの名無しさん
2020/08/08(土) 00:00:00.04ID:c43C7xo+ for /r %%i in (.)で下位フォルダ名取得
そのフォルダ内の最初のファイル名を取得(ソート指定)
対象フォルダ名の変更
もしやるならvbs噛ませると思う
そのフォルダ内の最初のファイル名を取得(ソート指定)
対象フォルダ名の変更
もしやるならvbs噛ませると思う
955デフォルトの名無しさん
2020/08/08(土) 05:43:20.34ID:jNP2OM4q >>953
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
956デフォルトの名無しさん
2020/08/08(土) 08:06:33.19ID:ulitZ7VR >>955
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
957デフォルトの名無しさん
2020/08/08(土) 08:25:04.94ID:HPaGwZBp どうでも良いことに拘るアホ
958デフォルトの名無しさん
2020/08/08(土) 09:01:08.32ID:nLoi7MqI どうでもいいと言うならテメーがどっちかに決めろや
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
959デフォルトの名無しさん
2020/08/08(土) 09:25:59.89ID:XY4Xe7zO ところで、質問者本人は、どちらを・・・・。
960デフォルトの名無しさん
2020/08/08(土) 09:32:21.16ID:d2hZRkL/ 仕様を全て決めないと取り掛かれないマヌケ多すぎ
無能は本筋から外れたところで発狂してろ
無能は本筋から外れたところで発狂してろ
961デフォルトの名無しさん
2020/08/08(土) 09:59:17.57ID:jNP2OM4q >>956
では今回はエクスプローラ側の並び順がいいです
では今回はエクスプローラ側の並び順がいいです
962デフォルトの名無しさん
2020/08/08(土) 10:22:17.59ID:cJmgrNkw963デフォルトの名無しさん
2020/08/08(土) 11:11:14.30ID:6XUmF/b8 とりあえずこんな感じ?(先頭はdir順)
if "%1" neq "" pushd "%~1"
for /d %%i in (*) do call :sub "%%~i"
popd
goto :eof
:sub
for /f "tokens=*" %%j in ('dir /b /on %1') do (
call :rename %1 "%%~j"
goto :eof
)
goto :eof
:rename
ren %1 %2
if errorlevel 0 call :rename-retry %1 %2
goto :eof
:rename-retry
rem ---todo---
goto :eof
if "%1" neq "" pushd "%~1"
for /d %%i in (*) do call :sub "%%~i"
popd
goto :eof
:sub
for /f "tokens=*" %%j in ('dir /b /on %1') do (
call :rename %1 "%%~j"
goto :eof
)
goto :eof
:rename
ren %1 %2
if errorlevel 0 call :rename-retry %1 %2
goto :eof
:rename-retry
rem ---todo---
goto :eof
964デフォルトの名無しさん
2020/08/08(土) 11:14:22.00ID:jNP2OM4q965デフォルトの名無しさん
2020/08/08(土) 12:00:51.68ID:jNP2OM4q globでやってみます
966デフォルトの名無しさん
2020/08/08(土) 12:16:11.89ID:XwBZfJ1v リネーム処理とかはもうPSの方がいいんじゃない?
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%G in ('dir /ad /b') do (
set N=
for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH"
if defined N (
if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else (
set dt=!date:~0,10!!time: =0!
set dt=!dt:/=!
set dt=!dt::=!
ren "%%~G" "!N!_!dt!"
)
)
)
pause &exit /b
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%G in ('dir /ad /b') do (
set N=
for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH"
if defined N (
if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else (
set dt=!date:~0,10!!time: =0!
set dt=!dt:/=!
set dt=!dt::=!
ren "%%~G" "!N!_!dt!"
)
)
)
pause &exit /b
967デフォルトの名無しさん
2020/08/08(土) 14:01:14.15ID:jNP2OM4q pythonでは向いてないですか
968デフォルトの名無しさん
2020/08/08(土) 15:20:59.87ID:IdUt1ux3 pythonはスレチ
969デフォルトの名無しさん
2020/08/08(土) 15:22:12.94ID:0U8ymD0p >>967
ならPythonスレで聞けよ…
ならPythonスレで聞けよ…
970デフォルトの名無しさん
2020/08/08(土) 16:11:06.79ID:Uh3gedSc dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから
wshでリネーム用のバッチファイルを作る方が楽かな
wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい
wshでリネーム用のバッチファイルを作る方が楽かな
wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい
971デフォルトの名無しさん
2020/08/09(日) 04:55:36.88ID:z2n3MQIn 仕様がないと取りかかれないと言うが
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ
972デフォルトの名無しさん
2020/08/09(日) 05:42:25.80ID:KFfdng53 Ruby で、チェックツールを作った
隠しファイル・ディレクトリは、どう扱うのか?
ファイル名に、. がある場合に、どうするのか?
require 'pathname'
p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" )
folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ
p folders.length, folders
files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ
# nil は、直下にファイルが存在しない、ディレクトリ
nil_cnt = files.count( &:nil? )
p files.length, nil_cnt, files
# compact で、nil の要素を省く
hash = files.compact.each_with_object( { } ) do |file, hash|
filename = file.basename.to_s # ファイル名を、ハッシュに追加していく
if hash.has_key? filename # ハッシュに、既に追加されていれば
hash[ filename ] += 1
else
hash[ filename ] = 1
end
end
# 2 以上のもの、つまり、同じファイル名になったものを表示する
p hash, hash.select { |key, val| val >= 2 }
隠しファイル・ディレクトリは、どう扱うのか?
ファイル名に、. がある場合に、どうするのか?
require 'pathname'
p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" )
folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ
p folders.length, folders
files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ
# nil は、直下にファイルが存在しない、ディレクトリ
nil_cnt = files.count( &:nil? )
p files.length, nil_cnt, files
# compact で、nil の要素を省く
hash = files.compact.each_with_object( { } ) do |file, hash|
filename = file.basename.to_s # ファイル名を、ハッシュに追加していく
if hash.has_key? filename # ハッシュに、既に追加されていれば
hash[ filename ] += 1
else
hash[ filename ] = 1
end
end
# 2 以上のもの、つまり、同じファイル名になったものを表示する
p hash, hash.select { |key, val| val >= 2 }
973デフォルトの名無しさん
2020/08/09(日) 06:16:13.05ID:wnSURbps そろそろ出てくるかと思ってた
974デフォルトの名無しさん
2020/08/09(日) 06:38:11.28ID:fObB6/0g 予測通り?
975デフォルトの名無しさん
2020/08/09(日) 08:51:35.00ID:AwQ8dIl5976デフォルトの名無しさん
2020/08/09(日) 16:47:47.63ID:0zxLTv88 典型的な無能の発言だな
977デフォルトの名無しさん
2020/08/09(日) 23:22:34.78ID:TBMXuXvF978デフォルトの名無しさん
2020/08/10(月) 01:55:02.34ID:9+h/1Osf979デフォルトの名無しさん
2020/08/10(月) 03:38:30.58ID:1F6bB0mG あいまいなのはユーザーが自分でも要求を把握しきっていないためだから
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
980デフォルトの名無しさん
2020/08/10(月) 04:21:21.96ID:mFEy/HZR > あいまいなのはユーザーが自分でも要求を把握しきっていないため
ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ
ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ
981デフォルトの名無しさん
2020/08/10(月) 11:53:14.80ID:ZLJuvAm6 ある程度ブレても、いいように開発できればいいのですけれどもね。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
982デフォルトの名無しさん
2020/08/10(月) 21:32:34.56ID:+SLQPb+P983デフォルトの名無しさん
2020/08/13(木) 21:47:50.59ID:5FyzI8Jm Soft\Soft.ini
12 LastCheck = Mon Aug 3 00:00:00 2020
13 LastUpdate = Mon Aug 3 00:00:00 2020
Soft\Plugins\update.txt
1 Update time: Wed Aug 12 23:59:59 2020
Soft.iniの12行目と13行目「Mon 〜 2020」を
update.txtの1行目「Wed 〜 2020」から置換して
12 LastCheck = Wed Aug 12 23:59:59 2020
13 LastUpdate = Wed Aug 12 23:59:59 2020
のように上書きしたいのですが
batファイルでどのように書けば出来ますか?
12 LastCheck = Mon Aug 3 00:00:00 2020
13 LastUpdate = Mon Aug 3 00:00:00 2020
Soft\Plugins\update.txt
1 Update time: Wed Aug 12 23:59:59 2020
Soft.iniの12行目と13行目「Mon 〜 2020」を
update.txtの1行目「Wed 〜 2020」から置換して
12 LastCheck = Wed Aug 12 23:59:59 2020
13 LastUpdate = Wed Aug 12 23:59:59 2020
のように上書きしたいのですが
batファイルでどのように書けば出来ますか?
984デフォルトの名無しさん
2020/08/13(木) 22:00:40.82ID:E452L2zK >>983
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…
985デフォルトの名無しさん
2020/08/14(金) 08:32:48.63ID:SCMnTycc Ruby では、これで設定できる
require 'inifile'
str = "Wed Aug 12 23:59:59 2020"
ini = IniFile.new( :filename => "test.ini" )
ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str }
ini.write( ) # save
結果
[abc]
LastCheck = Wed Aug 12 23:59:59 2020
LastUpdate = Wed Aug 12 23:59:59 2020
require 'inifile'
str = "Wed Aug 12 23:59:59 2020"
ini = IniFile.new( :filename => "test.ini" )
ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str }
ini.write( ) # save
結果
[abc]
LastCheck = Wed Aug 12 23:59:59 2020
LastUpdate = Wed Aug 12 23:59:59 2020
986デフォルトの名無しさん
2020/08/14(金) 09:14:47.97ID:oJspCYOK イヤミでは、なく止したら? <Ruby
987デフォルトの名無しさん
2020/08/14(金) 09:32:16.73ID:cdtRNbgQ Swiss File Knife
988デフォルトの名無しさん
2020/08/14(金) 09:39:33.54ID:dCe/n24a ・
989デフォルトの名無しさん
2020/08/14(金) 14:59:12.49ID:uGqrrAzw >>983
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H"
for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H"
REM 比較するならここで処理
REM echo "%VER_UT%" "%VER_IT%"
ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b)
for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do (
if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT%
) else (
if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT%
) else ( >>"%ini%" echo %%G=%%H
)
)
)
REM 空行消したくなければ findstrで読んで行番号を表示させる
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H"
for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H"
REM 比較するならここで処理
REM echo "%VER_UT%" "%VER_IT%"
ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b)
for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do (
if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT%
) else (
if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT%
) else ( >>"%ini%" echo %%G=%%H
)
)
)
REM 空行消したくなければ findstrで読んで行番号を表示させる
990デフォルトの名無しさん
2020/08/14(金) 21:06:33.51ID:II+YlR7/ ・
991デフォルトの名無しさん
2020/08/14(金) 22:02:35.58ID:TmzvbeJo992デフォルトの名無しさん
2020/08/14(金) 22:14:12.37ID:B6QaDwta 未来予知乙
生きてる価値もないなw
生きてる価値もないなw
993デフォルトの名無しさん
2020/08/14(金) 22:43:27.80ID:9FGl+Ien 低能Ruby厨か
994デフォルトの名無しさん
2020/08/14(金) 23:06:43.67ID:TmzvbeJo995デフォルトの名無しさん
2020/08/14(金) 23:10:45.52ID:SCMnTycc Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?
996デフォルトの名無しさん
2020/08/14(金) 23:35:08.04ID:LY+T9Pmp EDLIN
997デフォルトの名無しさん
2020/08/15(土) 00:03:00.44ID:fUIncIgN ・
998デフォルトの名無しさん
2020/08/15(土) 01:45:30.34ID:t8slxubu 次スレは?
999デフォルトの名無しさん
2020/08/15(土) 02:14:16.82ID:RWxrHj8y1000デフォルトの名無しさん
2020/08/15(土) 06:59:18.06ID:R7NunwzB 質問いいでしょうか
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。