1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
680 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:23:09.51 ID:TZP99wd2.net] 特別区切り記号だから
681 名前:デフォルトの名無しさん mailto:sage [2019/12/22(日) 19:05:52.87 ID:DvnYZkai.net] /rが悪さをしてるんじゃね サブフォルダの中でピリオドを2個にして
682 名前:デフォルトの名無しさん mailto:sage [2019/12/23(月) 21:26:36.07 ID:qZ1/nSQb.net] startコマンドでAPを起動後、「F11」をバッチファイルから入力するには、どう記述すればいいのでしょうか?
683 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 01:34:54.95 ID:vipj7N9s.net] 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
684 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 11:28:21.34 ID:E0w5VXt3.net] >>656 ワラタ
685 名前:デフォルトの名無しさん mailto:sage [2019/12/25(水) 12:39:52.06 ID:32sm7KoS.net] >>656 すごいな、プロ?
686 名前:デフォルトの名無しさん mailto:sage [2019/12/26(木) 00:38:52.07 ID:ocAthgHy.net] ウイルスに使えそうw
687 名前:デフォルトの名無しさん mailto:sage [2019/12/26(木) 18:09:54.44 ID:gPRn8RL/.net] 職業 プロバッチファイルスクリプター(自称)
688 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 00:09:22.71 ID:CW1qzWXe.net] %1がフォルダ名の場合、サイズを示す%~z1は0以外の数字になる 何を表しているのか不明
689 名前:デフォルトの名無しさん mailto:sage [2019/12/27(金) 07:50:28.51 ID:sZ8rOkNi.net] エントリーレコードのsizeじゃね?テキトーmaybe
690 名前:デフォルトの名無しさん mailto:sage [2019/12/28(土) 12:01:21.14 ID:c8Bqzbdx.net] >>662 そんな数字が多いですね \windows\winsxs や * だと違う表示も出るので意味不明、バグなのか
691 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 17:54:09.99 ID:LCDlLvJS.net] for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください dir /tc 何か | findstr findstr /e /c:"<DIR> ." みたいにして取り出して整形するのは何か間違えている気がしてならないので
692 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 20:56:32.19 ID:gZNl6+48.net] %~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 なら秒まで取得出来るしバッチより痒いところに手が届く
693 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 20:59:21.16 ID:gZNl6+48.net] 修正 %a→%%a echo %%a%%b%%c%%d%%e
694 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 08:18:43.19 ID:6GenP8Ub.net] ありがとうございます 何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、 って話になるんですね、ミリ秒単位までいけるみたいですし
695 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 09:56:56.50 ID:+cYn5CAB.net] forfiles でフォルダの更新日時も得られる、ただしファイルが多いと遅い forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime" dirだと得られない秒もOK、仕様がばらばら、バッチは不思議
696 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 13:02:11.21 ID:fh28MJ7p.net] 気まぐれに試してみたら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
697 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 01:23:14.19 ID:/SGph6WX.net] dir ? 親DIRがピリオド2文字なのに なぜ表示されるのか
698 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 07:59:26.77 ID:T5YxFwCT.net] . と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ だから .. の(作成|更新)日時は自ディレクトリと同じ .. は親ディレクトリを指し示すが親ディレクトリとは別のモノ なぜと問われても、そういう仕様だから、としか
699 名前:デフォルトの名無しさん mailto:sage [2020/01/04(土) 09:10:30.39 ID:/SGph6WX.net] >>671 ピリオドは区切り文字であり、 ワイルドカードの?の文字数のカウントに含まれず。 ピリオドが先頭だと、最初のトークンは空文字列となり、 ?は一文字以下の文字列を表すので、それに合致するわけかな。 ちなみに >>670 はそれより前のレスとは無関係
700 名前:デフォルトの名無しさん mailto:sage [2020/01/05(日) 07:41:36.68 ID:QOfK3b7c.net] >>670 dir /b ? だと表示しない謎
701 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 09:00:53.84 ID:VNkic2h1.net] ディレクトリと同じ扱いだから
702 名前:デフォルトの名無しさん mailto:sage [2020/01/06(月) 09:51:26.33 ID:8LUwvv7f.net] 先頭にドットがあると要注意だよな ワイルドカードがドットを無視する場合があるから >copy nul .txt >copy nul txt >dir/b .txt txt >del txt* >dir ファイルが見つかりません
703 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 10:00:17.73 ID:cX66OF4O.net] 簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって、なんでbatで書いちゃったんだろってなるのいい加減
704 名前:竄゚たい [] [ここ壊れてます]
705 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 05:17:30.74 ID:yWGnEtOx.net] @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 で遊んでたらなんか凄いの見付けた
706 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 07:12:55.26 ID:hqwlnXXW.net] >>676 PowerShellでいいんじゃね?
707 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 04:34:01.53 ID:AQjsaOZ5.net] ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど win10です テスト.bat ----------------------- @echo off for %%f in (%*) do ( echo %%f ) pause -------------------------- だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど( ちなみに @echo off echo %1 pause だけだとちゃんとフルパスで表示されます %%と%の違いってなんですか?
708 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 05:40:03.52 ID:FVJQifjo.net] 引数が最低1つ以上の場合 :LOOP echo "%~nx1" shift if not "%~1"=="" goto :LOOP pause 引数が0個の可能性がある場合 :LOOP if "%~1"=="" pause &exit /b echo "%~nx1" shift goto :LOOP
709 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:29:31 ID:B/evOggr.net] shift使わない方法でお願いします
710 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:39:02 ID:FVJQifjo.net] >>679 その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて 引数がクオートされていない場合に上手く行かない がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認
711 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 18:45:30.02 ID:Xdf1G9+g.net] WSLって専用スレあったりする?
712 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 18:48:00.37 ID:T5MzU9c3.net] >>680 あー>>680 のやり方の方がいいわせか >>682 できましたありがとう
713 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 06:36:29 ID:77YAYmoS.net] >あー>>680 のやり方の方がいいわせか そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ バッチはどうやってもバグを内包する。極論動けば何でもいい バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる そういったのを理解した上で簡単な事をやるくらいならいいけど 少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる 面倒を避けたいなら初めからPowerShellとかでやった方がいい 今から覚えるなら尚更
714 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 08:02:35 ID:UuH5oHRt.net] >>679 ドラッグ&ドロップ したファイル名に たぶん ) があるんだろう a(1).txt とかね なぜ落ちるか自分で考えてみろ
715 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 23:29:59.70 ID:jJ2WRqDf.net] >>686 それな バッチはこういう罠があるからPSに移行したわ コメント欄に迂闊に括弧も使えないしこわいこわい
716 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 20:57:19.47 ID:qiuXI8ht.net] ネストされた環境変数が展開されない事象について https://social.technet.microsoft.com/Forums/ja-jp/0add404a-4157-416f-bf15-0ad455102d85/12493124731248812373124281238329872226592279325968123642363738?forum=Wcsupportja
717 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:47:29 ID:Nyn5xlpx.net] 2つのウィンドウで別フォルダを表示してファイル存在の有無によって選択/解除ができその後コピーや移動ができる、そんなファイラーがあったら便利だなと探してました。 WinZIP関係のソフトで7-zipというのがあり、なぜか
718 名前:解凍するとその中に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のやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした。 [] [ここ壊れてます]
719 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:31:16 ID:Jc09ZNe5.net] そんなことまで無理にcmdでやらんでも・・・ WinMergeすら入れさせてもらえない環境なのか?
720 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:15:34 ID:+0QHC3Wk.net] 日記?
721 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 22:49:16 ID:lbmGsP+l.net] "送る"って意外と不自由なんだな… バッチファイルでワンクッション入れて(゚д゚)ウマー
722 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 23:14:40 ID:Vj4Y99PX.net] 何が不自由なの
723 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:40:29.71 ID:6k+E856c.net] このバッチで何か入力しても a が消える @echo off set /p a=data= rem %a=% echo data=%a% pause
724 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 22:45:14 ID:VR7HU+gm.net] >693 勉強不足があるかも知れんが ・さっさと画面を閉じちゃう(cmd/kで回避) ・%1に入れてくれない ・ファイル名の後ろにオプションが付けられない
725 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 23:26:29 ID:D5cDwkr0.net] ワンクッションってそういう意味か 昔からスクリプトを送るに登録することなんて当たり前のことだったけどね むしろexeしか登録しない人はこのスレにはいないとまで思ってた
726 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 11:16:38 ID:JWfC0/9e.net] >>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
727 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 18:23:32 ID:62ExnvKA.net] 叩いたらスクリーンセーバーをオフにしたく、killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど、Windows10のタブレットモードで動かすとスタートメニューが起動してしまう。 元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな? ソフトを立ち上げっぱなし→スクリーンセーバー起動→条件下でスクリーンセーバーkillバッチ→立ち上げてたソフトに戻る ってのにしたいのにkillバッチ→スタートメニューになってしまう あと、バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない…
728 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 13:13:43 ID:0DoxGo8j.net] スクリーンセーバー動いてるのに、 どうやってバッチ叩いてんの? さっぱりわからん
729 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:18:37.16 ID:B/3TWI1a.net] >>698 ネタだよね?
730 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 12:30:00.59 ID:DitzTCfU.net] 何かをトリガーにしてタスクから叩くって事じゃないかな
731 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:11:28 ID:DSTYXSth.net] 特定のキー操作で解除するタイプのスクリーンセーバーなのかな? でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど
732 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 17:51:57.47 ID:hksaF/sY.net] Windows7標準のmklink
733 名前:でシンボリックリンクを作ると リンクのタイムスタンプ(作成、更新、アクセスいずれも)は リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり 普通のファイルのようにはタイムスタンプを変更できないようだけど 変更する方法ある? ハードリンクなら同じものを見ることになるから勝手に揃うけど 使い分けの方針が定まらなくてあまり使ってない [] [ここ壊れてます]
734 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 23:47:43 ID:9k84sg+E.net] >>703 シンボリックリンクの実体はファイルだからSetFileTimeで変更できるらしいぞ らしいってのは俺がシンボリックリンクつかったことないからね
735 名前:デフォルトの名無しさん mailto:sage [2020/02/14(金) 23:11:39 ID:2Mmdz3hG.net] Windows Vistaは2017年にサポートが終了しましたがWindows Server 2008向けのセキュリティ更新プログラムを手動でインストールすることができていました。 ところがどの順番でどれをインスコすればいいのか面倒、、、それを解決するバッチプログラムを作った方がいます。 バッチファイルの記述がフムフム、へぇ〜という感じで自分にはとても勉強になりました。興味ある方はどぞ 創造の柱 blog.livedoor.jp/pillars_of_creation/archives/1831755.html
736 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 10:56:05.36 .net] このスレで聞くべきなのか分かりませんが、Windowsで数千個のPDFを一括処理したいので、取りあえずここで聞いてみます。 PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で、"表示"、"ページレイアウト"、"倍率"を設定できますが、 1つ1つ手作業で設定するのはさすがに無理です。 Javaの様なプログラミング言語でも、他のアプリでも何でもいいんですが、この文書のプロパティを一括で設定する方法って何がありますか?
737 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 18:54:16 ID:k6OnWQi4.net] それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?
738 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 19:52:05 ID:LC2xv/4E.net] 変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね
739 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 20:27:13.25 .net] >>707 Acrobat側の表示方法を変えるのじゃ無く、PDF側で変えたい
740 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 20:53:17.46 ID:k6OnWQi4.net] そもそもPDF側に表示方法が保存されてるものなの? 結局Acrobat側の問題じゃない?
741 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 22:35:05.89 ID:tH0Sn0AY.net] 「pdf コマンドライン ページレイアウト」でググったら cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた これ、見開きを縦スクロールにしたり単ページにしたりできて面白い "倍率" が 2017/10 の時点で無理らしいけど
742 名前:デフォルトの名無しさん mailto:sage [2020/03/26(木) 01:20:56.78 ID:3WOBAGMl.net] ID消して質問してるのがすげー腹立つな 本当に解決を望んでるなら逆にコテ付けるぐらいできんのか
743 名前:デフォルトの名無しさん mailto:sage [2020/03/30(月) 02:44:24 ID:X7klH3J+.net] windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど
744 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 11:05:03 ID:6HUykZ9A.net] 今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな いちいちコードページ指定するとなんかウィンドウが切り替わって重いし cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
745 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 14:03:40.50 ID:a+OnqKl3.net] MSはレガシーのために保守してるだけだろ powershell使え
746 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 16:57:49 ID:Vod
] [ここ壊れてます]
747 名前:BEB+r.net mailto: 例えば、こんなバッチをutf-8で作成して実行する。 できたtest.txtを見たら1行しかない。なんでだ。 @echo off chcp 65001 call :test > test.txt exit :test echo テスト echo テスト [] [ここ壊れてます]
748 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:12:48 ID:fYZW+FI9.net] このスレで、utf-8 のバッチファイルにするなら、 行末は半角英数な文字にしとけ というのを学んだ、>>262 からの流れ なんでなのかはいまだに知らない
749 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:22:50 ID:D5FH+wQt.net] 2つめのechoがエラーになってるね echo テスト echo テスト と間に空白行を挟めば正常だがどういう理屈なのか分からん
750 名前:デフォルトの名無しさん mailto:sage [2020/04/18(土) 17:31:32 ID:VodBEB+r.net] れすサンクス
751 名前:デフォルトの名無しさん [2020/04/21(火) 19:56:52 ID:vK3trFFL.net] %2つというのは、何らかのエスケープですか? また、forを使うときにfor %iなどとしますが、%の意味がよくわかりません
752 名前:デフォルトの名無しさん [2020/04/21(火) 21:11:11 ID:vK3trFFL.net] フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか forを使用してインデックスを連番として付与する感じだと思うんですが ファイルはこんな感じです 犬.txt 猫.txt 猿.txt
753 名前:デフォルトの名無しさん [2020/04/21(火) 21:17:03.32 ID:FdhLTsrP.net] >>720 %は互換性や拡張などのおかげで大変ややこしい事になっている 説明するには小一時間かかるのでここでは控える事にする
754 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 21:26:09.14 ID:M3jMZi3+.net] >>720 %は変数を定義する時に使うよ %iで「iという変数」になるよ バッチプログラムで使う時は%%iにする必要があるよ https://www.pg-fl.jp/program/dos/doscmd/for.htm 「%」のページも読んだ方が良いよ
755 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:46:58.98 ID:HADG6GDb.net] >>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
756 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 22:54:20 ID:h/bjIQIw.net] rubyはスレ違い
757 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:04:39.20 ID:s3lLVMWt.net] 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
758 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:14:39.66 ID:J0u+GdjC.net] リネームは結構難しい リネーム後のファイルが再びリネーム対象となる場合がある
759 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:27:06 ID:alPdontK.net] set N=1000 :LOOP if "%~1"=="" exit /b set /a N+=1 ren "%~1" "%N:~-3% %~nx1" shift goto :LOOP
760 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:28:37 ID:s3lLVMWt.net] リネーム後のファイル名が既存だったりするし
761 名前:デフォルトの名無しさん mailto:sage [2020/04/21(火) 23:49:32 ID:GY5lnYbX.net] リネームは一覧を一旦ファイルに出力してから回した方が安全だよ それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
762 名前:vbsかjsかpowershell [] [ここ壊れてます]
763 名前:724 mailto:sage [2020/04/21(火) 23:57:26 ID:HADG6GDb.net] >>724 のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" ) で、そのフォルダ内のすべてのファイルを取得しているから、 各ファイルを、rename していく途中で、 rename後のファイルを、再びrenameすることはない
764 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 00:04:16 ID:vEO7RF6u.net] >>730 ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね? UNICODE文字は関係あるかね?
765 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 06:52:59.32 ID:gobEj/px.net] >>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の名前は何でもいいが既存の名前を避けてください。
766 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 09:12:13 ID:UZ0N9G3p.net] >>732 >UNICODE文字は関係あるかね? SJISに含まれてない文字が入ってると酷いことになる
767 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 10:16:03 ID:MJO3kN2U.net] 駄目文字のせいでSJISコードがバグると言うならまだわかるが その逆って意味がわからないな MSは全くテストしてないってことか
768 名前:デフォルトの名無しさん [2020/04/22(水) 11:07:12 ID:/W5c3Vma.net] >>722-735 どうも 勉強中です
769 名前:デフォルトの名無しさん [2020/04/22(水) 11:53:22 ID:/W5c3Vma.net] 複数行を一行にまとめる場合は、&でつなぐんでしょうか? これが改行と同じ意味でしょうかね。
770 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 12:07:17 ID:vEO7RF6u.net] >>736 @echo off & set n=1001& chcp 65001 > nul for /f "delims="eol^= %%i in ('dir /b *.txt') do set a=%%i& call :x goto :eof :x ren "%a%" "%n:~1%-%a%" & set /a n+=1 >>734 コードページ変えればいいだけ
771 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:08:42.79 ID:nR8TNEgs.net] >>737 複数行をまとめるって、、 文字列の足し算の話? コマンドを複数行に分割して記述する話? (継続文字のこと?)
772 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 19:11:46 ID:nR8TNEgs.net] >>739 または複数コマンドを一行で記述する話?
773 名前:デフォルトの名無しさん mailto:sage [2020/04/22(水) 20:05:53.95 ID:j1ZYXyL3.net] >>735 コマンドプロンプトは自体はUNICODE対応 各種コマンドもUNICODE対応 だけどバッチファイルは過去の互換性が必要なので デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。 その設定はchcpで変えることが出来る 単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが forでバッチファイルの世界に招き入れたら、 chcpの設定によって文字コードの変換が行われる テストはしてるだろ。この文字コード変換は仕様なので バッチファイルでUNICODE文字を扱いたければchcpで UTF-8に変更しなければならないというだけのこと
774 名前:デフォルトの名無しさん [2020/04/23(木) 06:47:17 ID:153+oMoq.net] >>739 バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
775 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 08:24:04.38 ID:5iduMLE+.net] >>742 複数行をコピペじゃ駄目なの? 例えば、この内容をメモ帳に記述しておいて rem ―- ここから ―― dism /online /cleanup-image /restorehealth sfc /scannow rem ―- ここまで ―- 4行をコピペする
776 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 09:07:36 ID:Z6s7Y3Lu.net] >>742 複数コマンドを1行で実行したいということなら、、、 A & B ... A実行後にBを実行 A | B ... Aの実行結果をBに渡して実行 A && B ... Aが成功したらBを実行 A || B ... Aが失敗したらBを実行 長いコマンドを複数行に分割したいなら、、、 Sentence1 ^<改行> Sentence2 (サーカムフレックスで継続)
777 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 12:04:05.59 ID:qTwHi2aC.net] ()で囲めばいい。 (timeout /t 300 cd d f:\hoge for %f in ( *.jpg ) do ( ・・・ ) ) 正式名称が何かは知らないが勝手にブ
778 名前:ロックと呼んでる。 [] [ここ壊れてます]
779 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:02.07 ID:WFX6w8Jo.net] >>744 そういうのがあるのか、| 以外知らなかった
780 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 14:59:42.71 ID:WFX6w8Jo.net] >>745 これも知らなかった