拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
【.cmd】 バッチファイルスクリプト %12 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9 http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8 http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7 http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1 http://pc11.2ch.net/test/read.cgi/tech/1178281991/
【.cmd】 バッチファイルスクリプト %13 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
2018/11/21(水) 14:52:07.84ID:v84I4o+L
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で ★2 [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 【悲報】中国を煽り運転に例えたネトウヨさん、完全に論破されてしまう [268718286]
- 山上母、安倍晋三と統一教会の関わりを知っていた。「私が加害者」と発言するも、脱会については「できれば今の形で」 [545512288]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 高市「金正恩総書記と会談したい」 国交ある国ですらまともに外交出来ないのに北朝鮮相手に何が出来るのこいつ [878970802]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【正論】有識者「高市早苗に合理的配慮をしなかった野党が悪い」 [175344491]
