拡張子が .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
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
頑張ってググってきたんだからほめてやれよ
頑張ってググってきたんだからほめてやれよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 20代の3割が「テレビ見ない」現実…そして静かに広がる「究極のテレビ離れ」とは [muffin★]
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- んなっしょい🍬禁止🈲のお🏡
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】ガラパゴス島国ジャップ、自分達の容姿が優れてると錯覚してしまう [383063292]
