1 名前:デフォルトの名無しさん mailto:sageteoff [2017/03/11(土) 13:47:11.66 ID:2LSSeyH1.net] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ それ以前の過去スレ %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/
892 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 18:26:50.86 ID:Iu01kfl1.net] 俺もよく使うよ、goto :eof
893 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 18:28:05.47 ID:hOPHqLcn.net] >>850 何か問題が? goto :endとかより遥かにいいと思うが
894 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 18:33:02.62 ID:Iu01kfl1.net] goto その物が多いとか言われた事も
895 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 18:46:17.97 ID:vSWfZutq.net] 自分だと大抵 {メインルーチン} goto :EOF :sub1 {サブルーチン12} exit /b :sub2 {サブルーチン} exit /b と書くことが多い。 トップ回答者様は {メインルーチン} goto :EOF :sub1 {サブルーチン} goto :EOF sub2 {サブルーチン} goto :EOF と回答されている。サブルーチンの下のはgoto は不要だし慣れない。
896 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 19:02:53.79 ID:Iu01kfl1.net] 戻り値なけりゃどっちでもいい様な気がするが 逆に exit を避けてる人もいるよ
897 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 19:53:21.88 ID:LaGwhHU8.net] 俺もgoto派だな
898 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 21:35:58.50 ID:RB/KKRkK.net] gotoは見通しが悪くなるから、極力使わないようにしてる 他の主流の言語だと使えないものが多いから、必然的にそういう書き方に慣れてしまった
899 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:49:53.55 ID:8nMQUHh9.net] goto は使わないに越したことはない。 が、制御構文が貧弱な言語では、熟慮の上で使わざるを得ない場面で使う。 が正解。 詳しくはWikipediaで。
900 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:56:24.52 ID:qkvvR9Zs.net] Cでもgotoは使うよね
901 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 23:58:44.47 ID:8nMQUHh9.net] C言語にはMISRAとかいう規約があるが無視していい。 あれは組み込み分野だけの特殊なものだと思っていい。 大抵の人間は、「これは思考からはぶいていい」という書き方の方が読みやすい。 だから、「これは戻すか終わらせる」と書いていっていい。 そうすれば、残ったものに集中できるだろ? まぁ、日ごろ「自分が辞めた後にこれを読まされる人間が困らないかどうか」って考えて書いてるかどうかってことだ。
902 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 16:39:29.59 ID:P4YKYACU.net] あちこちでreturnするのもスパゲッティなgotoと大差がない気がするんだ テロ的というか
903 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 17:10:22.17 ID:GNiE4xH/.net] 字面が違うだけで同じだろ
904 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 20:28:48.17 ID:gea8Zy97.net] gotoもイディオムに従って使えば混乱しない バッチファイルだとforの方が理解不能で害悪
905 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 23:02:20.58 ID:tgEP6apu.net] gotoがゴーゴーに見えた
906 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 23:12:15.45 ID:uJ87E9Rb.net] >>860-861 IPAの出してるMISRAの解説書のreturnは1か所にしろというルール、 あれはクソofクソのルールだと思うね。early returnこそ正義 Cとbatの書き方は全然比較にならないけど
907 名前:デフォルトの名無しさん [2018/10/07(日) 00:27:12.50 ID:pbh8RIqN.net] >>861 むしろ goto の良い使い方と言われている制限が、return をまねたもの。
908 名前:デフォルトの名無しさん [2018/10/07(日) 11:03:03.39 ID:Bzp9uIq0.net] バッチファイルかパワーシェルでIPv4のIPアドレスのみを取得して環境変数に代入するにはどういうコマンドになりますか? 教えてください
909 名前:デフォルトの名無しさん mailto:sage [2018/
] [ここ壊れてます]
910 名前:10/07(日) 12:00:15.70 ID:6qmhFN/2.net mailto: 「powershell ip address」で検索! [] [ここ壊れてます]
911 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 12:28:26.52 ID:VwaVbKnV.net] >>867 環境変数IPAddressに192を含んだIPアドレスを代入するサンプル(PowerShell 2.0併用) set CMD=powershell -command "& {ipconfig |? {$_ -match 'IP.*: 192\.'}|% {$_ -replace '.*: (\d+\.\d+\.\d+\.\d+)','$1'}}" for /f "usebackq delims=" %%a in (`%CMD%`) do set IPAddress=%%a echo %IPAddress% PowerShell部分はipconfigの結果から正規表現でIPと: 192という文字を含む行を抽出 抽出した行のIPアドレス部分のみ正規表現の置換で抽出といった感じ PowerShell3.0以降だともうちょっと素直に書ける感じだけど
912 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 12:53:16.71 ID:Dedwpgqn.net] アダプタが1つだけならこんなでいいんじゃね? setlocal enabledelayedexpansion for /f "tokens=2 delims=:" %%a in ('ipconfig ^|find "IPv4"') do set IPADRESS=%%a set IPADRESS=%IPADRESS:~1% echo %IPADRESS%
913 名前:デフォルトの名無しさん [2018/10/07(日) 12:54:26.67 ID:Bzp9uIq0.net] この処理作るのにバッチとパワーシェル組み合わせないとできないんですか? ip取得するだけでも結構大変なのですね
914 名前:デフォルトの名無しさん [2018/10/07(日) 12:56:55.73 ID:Bzp9uIq0.net] と思ったらバッチだけでもできそうなんですね、アダプターは一つです ちょっと色々教えてもらったのでテストしてみます!
915 名前:870 mailto:sage [2018/10/07(日) 13:03:20.66 ID:Dedwpgqn.net] 遅延変数展開の呪文要らなかったわ、1行目削っていいよ
916 名前:デフォルトの名無しさん [2018/10/07(日) 13:07:01.74 ID:Bzp9uIq0.net] 遅延環境数ってforとifの()で使用するときだけ必要なんでしたっけ?
917 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 13:23:02.79 ID:Dedwpgqn.net] だいたいその理解でおk forやifの()内のスクリプトブロックが複数処理で変数代入とその参照のペアがある場合に使う 1処理だけとか、代入だけとかなら不要
918 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 17:41:47.85 ID:0jrGYEp4.net] 無限ループの原因は何か SET A=1073741824 FOR /L %%B IN (-%A%,%A%,%A%) DO ECHO %%B
919 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:04:07.20 ID:Dedwpgqn.net] set /a A=1073741824 1073741824 set /a B=A+A -2147483648 となるからね、32bitINTの範囲が-2147483648〜-2147483647 2進表記の最上位bitが1が立ってしまったらマイナス値
920 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:25:23.31 ID:Dedwpgqn.net] 試してみるとfor /l 文ではステップ値が1073741824以上の場合必ずバグったループになるね、まあ仕方ないのかも
921 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:43:19.94 ID:0jrGYEp4.net] 内部的にどんな計算してるか気になるところです B は -1073741824,0,1073741824 なので 普通に考えると32ビットのオーバーフローはしてない筈
922 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:55:29.49 ID:0jrGYEp4.net] ああ、分かった 4ループめでオーバーフローするのか 3ループめで最終値に等しいと抜けるんじゃ無いわけか
923 名前:デフォルトの名無しさん [2018/10/07(日) 19:57:49.70 ID:2JwzOMBB.net] バッチファイルのif文でパワーシェルのif -Orみたいな処理できますか?
924 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 20:18:06.07 ID:0jrGYEp4.net] IFの条件は2個の値を比較するだけ 複雑なOR,AND,XORとかあるんなら計算して結果を変数に入れる それをIFの条件で使う
925 名前:デフォルトの名無しさん mailto:sage [2018/10/08(月) 21:58:47.76 ID:To7x1PVP.net] あると便利なミニミニバッチ DOS窓に今の時間を表示しておく m.bat @echo off setlocal set x=%date:~5% %time:~0,5% %* title=%x% exit /B 0 画面クリア c.bat @echo off cls exit /B 0 クリップボードクリア cc.bat @echo off echo.|clip echo clip clear exit /B 0
926 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 08:38:25.31 ID:IIAdkwpd.net] 画面クリアは普通にcls打つのと何が
927 名前:違うん? [] [ここ壊れてます]
928 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 11:35:59.50 ID:9WevvN1n.net] 時刻表示ならプロンプト変えたら? clsは>>884 クリップボード履歴管理系のアプリ使ってる人には無用?
929 名前:デフォルトの名無しさん mailto:sage [2018/10/09(火) 15:53:20.49 ID:hXgFZ2lj.net] >>884 一文字でいいので、お菓子を食べながらでもできる、大差
930 名前:デフォルトの名無しさん mailto:sage [2018/10/10(水) 17:37:49.95 ID:Wl83IH5q.net] そういうしょぼいものならdoskeyでも使っとけ
931 名前:デフォルトの名無しさん mailto:sage [2018/10/11(木) 22:01:20.44 ID:aIIKUaH8.net] 1文字とか何かで誤爆しそうで危うすぎる
932 名前:デフォルトの名無しさん [2018/10/12(金) 00:17:12.22 ID:xVyRtSc0.net] くだらねー
933 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 05:37:42.36 ID:YmkYzRio.net] copyコマンドがおかしい copy x+y z とするとzに改行追加されている copy /B x+y z だと問題なしだが??
934 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 07:34:07.12 ID:TS7U3WRI.net] >>890 これね ttp://shigechi-64.hatenablog.com/entry/20090717/1247798200
935 名前:デフォルトの名無しさん mailto:sage [2018/10/13(土) 19:25:44.82 ID:fQqIQRVk.net] 改行じゃなくて 0x1A の 1byte なら付加されるが echo test> a dir a copy a /b + nul /a dir a サイズが 1byte 増える
936 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 01:22:10.62 ID:IWBgfNe4.net] >>891 以前から知られていたのですね そのサイトはウィルス注意報が出たので見ませんでしたが
937 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 06:32:47.46 ID:5zXkQKrC.net] テキストファイルのEOF(0x1A)は前世紀の遺物 昔のテキストエディタはファイルの末尾にEOF(0x1A)を付加していた。 仕様が古すぎて今じゃCOPYのヘルプを見ても、詳細が分からん状態 copy でファイルを連結する時は /a がデフォルト ちなみに copy /a はEOF(0x1A)を付加するだけじゃないぞ ファイルの途中に0x1Aが有ったらそれ以降が無くなってしまう怖い仕様 あと、echo xxx >> とかでテキストを追加したら末尾の0x1Aは勝手に削除される
938 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 09:07:44.01 ID:YBMQaeBO.net] >>30 >>31 ずいぶん昔の質問で悪いんだが これって全ての引数を意味する「%*」に起動時のコマンドラインは含まれないってこと?
939 名前:デフォルトの名無しさん mailto:sage [2018/10/14(日) 18:08:37.67 ID:gwXaIkcp.net] chcp 65001入ってるスクリプトをUTF-8で保存して動かしてみたらエスケープ処理が酷い・・・
940 名前:デフォルトの名無しさん mailto:sage [2018/10/15(月) 01:28:48.04 ID:yVBNeV/e.net] >>895 そうです バッチはいろいろ癖があるので、そんなものだと思うしかないです 別件 echo %* shift echo %* rem %* はshiftされない
941 名前:デフォルトの名無しさん mailto:sage [2018/10/16(火) 00:24:50.38 ID:GeydM3gl.net] >>897 The shift command has no effect on the %* batch parameter. https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shift SHIFT doesn't affect %* https://stackoverflow.com/questions/12990480/shift-doesn-t-affect
942 名前:デフォルトの名無しさん mailto:sage [2018/10/25(木) 05:27:15.65 ID:cKUaktMr.net] echo %__APPDIR__% C:\Windows\SysWOW64\ これが出る時32ビットのコマンドプロンプトらしいんですが 64ビットのコマンドプロンプトと何か違うんでしょうか
943 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 11:16:03.78 ID:NXHcy7gB.net] reg query "HKU\.DEFAULT\Control Panel\International" 表示された最後の行に H
944 名前:KEY_USERS\.DEFAULT\Control Panel\International\・・・・・・ これは何だろうとレジストリエディタで見ると謎の文字で地球が3つ。 しかしメモ帳で表示出来る文字が コンソール画面で表示出来ないのはダメだね [] [ここ壊れてます]
945 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:02:14.11 ID:8ILfgags.net] メモ帳「俺はだいぶ前からユニコード対応済みだから表示はするさ、ANSI(CP932)で保存はできなくてもなー」
946 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 12:15:54.46 ID:NXHcy7gB.net] DIRコマンドでもユニコード対応してるよね。ちゃんと表示される。 でもこの地球文字はDIRコマンドでも表示されないようだ フォントの問題かねえ
947 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 13:14:57.64 ID:8ILfgags.net] フォント問題だね、 メモ帳とかレジストリエディタはフォントリンクで表示用フォントが持ってないコードも他のフォントにあればそれで代用表示するから
948 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 15:49:46.95 ID:IkTi26EG.net] なんだよ地球文字って?
949 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 16:16:07.64 ID:NXHcy7gB.net] https://www.charbase.com/1f30e-unicode-earth-globe-americas https://www.charbase.com/1f30f-unicode-earth-globe-asia-australia https://www.charbase.com/1f30d-unicode-earth-globe-europe-africa
950 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 16:59:45.97 ID:r0d5m4I8.net] そんな文字(絵文字?)があるのか。 初めて見て、びっくり。(; ̄Д ̄)
951 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 17:04:05.15 ID:NXHcy7gB.net] それ、右上のリンクを押したら色々出て来て笑える
952 名前:デフォルトの名無しさん mailto:sage [2018/10/27(土) 22:17:46.77 ID:8ILfgags.net] for /f %a in ('dir /b') do echo %~za,%~ta なんてことできたんだねえ、 dir /bは他の属性情報を削いでるからできないと思い込んでた
953 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 08:43:59.31 ID:uzLWPyey.net] >>908 dirで取得した情報使うわけじゃないから カレントにxxx.txtとかのファイルがあれば for /f %a in ("xxx.txt") do echo %~za とかできるよ
954 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 11:17:25.40 ID:ecNurFe9.net] dpnxfだったら単にファイル名にカレントのパスを付けるだけだからチグハグでも出来ちゃうんだぜ aaa.txtっていうファイルがカレントに存在してなくても構わないってことだ pushd d:\xxx\yyy for /f %a in ("aaa.txt") do echo %~fa ってやれば、d:\xxx\yyy\aaa.txtっていう架空のファイルのフルパス名を表示してくれる
955 名前:デフォルトの名無しさん mailto:sage [2018/10/28(日) 20:39:42.80 ID:5N/SSOj8.net] >>905 俺のブラウザが古いのかうまく表示されなかったけど、これか。 i.stack.imgur.com/DQ2Ls.png
956 名前:デフォルトの名無しさん [2018/10/29(月) 00:52:54.50 ID:m4kOmKq3.net] 質問です。 データが以下のように入っているcsvファイルを 指定された削除対象のファイル名の行を削除したいです。 削除対象は別ファイルに一覧としてあります。 イメージとしては以下のようにしたいです。 bass.csv ================================ ファイル名,日付,時間 AAA,20111001,1300 AAB,20171001,1300 AAC,20171031,1300 AAD,20171031,1300 ================================ delete.txt ================================ AAB AAD ================================ output.csv ================================ ファイル名,日付,時間 AAA,20111001,1300 AAC,20171031,1300 ================================ OSはWindows7 コマンド(batでもOK)でoutput.csvのような形にしたいのですが 上手くいかず、findstr /V で1行だけ試しにやってみたら理想と近い形になったのですが、 削除対象が複数になると上手くいきませんでした。
957 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 06:11:32.56 ID:VYDzXbvz.net] ? findstr /v "AAA AAD" bass.csv>output.csv で行くはずだがだめだった? これが行ければ除外パターンを作るfor /f文を前段に作るだけで終わると思うが
958 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 06:59:07.30 ID:VYDzXbvz.net] 行けるじゃん…そういえばfindstrは/gオプションあるから、for文も要らんね findstr /v /g:delete.txt bass.csv>output.txt なおfindstrの複数検索パターン指定は和文だと失敗する。 英
959 名前:博嘯フ検索なら問題なし [] [ここ壊れてます]
960 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 07:23:43.41 ID:g89iCylL.net] よくわからんが FINDSTR /B にして検索文字列のあとに , を付ければいいんじゃね
961 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 07:26:06.09 ID:g89iCylL.net] あ、/I も付ければいいかも
962 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 08:03:30.04 ID:VYDzXbvz.net] 行頭以外にAAAやAADが記述されており、それは出力したいなら /B は合った方がいい
963 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 08:12:46.70 ID:VYDzXbvz.net] 訂正 AABやAADが だった
964 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 08:15:25.80 ID:g89iCylL.net] 無いとファイル名の部分一致するかも 拡張子あるなら末尾の , は要らんかも 和文ダメなんだ知らんかった
965 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 09:16:39.77 ID:g89iCylL.net] >>912 和文無ければ不要のバッチ @echo off & setlocal & set /a n=0 for /f "delims=" %%i in (delete.txt) do set "s=%%i" & call :x if %n%==0 (goto :eof ) else set /a n-=1 echo ファイル名,日付,時間> output.csv for /f "skip=1 delims=" %%i in (bass.csv) do set "s=%%i" & call :y goto :eof :x set "d%n%=%s%" & set /a n+=1 & goto :eof :y for /f "delims=," %%j in ("%s%") do set "s1=%%j" & call :z goto :eof :z setlocal enabledelayedexpansion for /L %%k in (0,1,%n%) do if /i "!s1!"=="!d%%k!" goto :eof echo !s!>> output.csv
966 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 09:25:17.80 ID:g89iCylL.net] >>920 3行目訂正 if %n%==0 (copy bass.csv output.csv & goto :eof ) else set /a n-=1
967 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 10:42:05.23 ID:VYDzXbvz.net] おいらが書くならこう @echo off setlocal enabledelayedexpansion for /f %%a in (delete.txt) do set list=!list!,%%a set list=%list:,= % for /f "delims=" %%b in (bass.csv) do ( set "line=%%b" set /a flg=0 for %%b in (%list%) do ( echo !line!|findstr /b /v "%%b">nul 2>&1 set /a flg +=!errorlevel! ) rem echo !cnt! if !flg! equ 0 echo !line!>>output.txt ) pause
968 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:13:29.52 ID:K68WvpFD.net] >>899 x64だと C:\Windows\System32\ x64だと64bitで書いたアプリもあるのでフォルダで区別 ここらへんwindows自体が手品のようなことをしていていわば巨大ウィルスソフト化 x64はintelの失敗作、性能を優先しすぎて使い勝手が大幅に悪くなった
969 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:17:19.87 ID:P47cxv7B.net] CSVのフィルタ処理をバッチでやろうとは思わないけど参考になった
970 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:21:43.07 ID:VYDzXbvz.net] すまん、>>922 の内側のfor分の %%変数は%%cの方がよかった。 ローカル変数的な振る舞いで動作上は問題ないけど
971 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:39:07.63 ID:wCs1yHBV.net] 先輩方、お知恵ありがとうございます。 情報の後出しとなってしまって大変申し訳ありません。 ファイル名には枝番がふられているものがあり、 delete.txtに記載されている「AAB」を削除指定すると枝番01,02の記載迄消えてしまう為 ファイル名と完全一致の行のみを削除するにはどのようにすれば良いかお知恵をお借りしたかった次第です。 bass.csv ================================ ファイル名,日付,時間 AAA,20111001,1300 AAB,20171001,1300 AAC,20171031,1300 AAD,20171031,1300 AAB01,20111001,1300 AAB02,20111001,1300 ================================ delete.txt ================================ AAB AAD ================================ output.csv ================================ ファイル名,日付,時間 AAA,20111001,1300 AAC,20171031,1300 AAB01,20111001,1300 AAB02,20111001,1300 ================================
972 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:41:47.37 ID:VYDzXbvz.net] delete.txtにカンマ加えて書けばいいんでないの? AAB, AAD,
973 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 11:55:18.87 ID:g89iCylL.net] >>926 >>920 でOK >>922 delete.txtの中の テキストに半角スペースや ! 文字があると誤動作
974 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 12:31:59.63 ID:g89iCylL.net] >>926 もし>>920 を使うなら>>921 で訂正してください
975 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 13:38:05.43 ID:SulfyTCP.net] >>923 質問は64bitならどういう値になるって質問ではなくて、 32bitの場合と64bitの場合とで機能・動作的に何が違うの? って意味だと思うけど
976 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 13:42:01.94 ID:t/dvzEws.net] >>930 違うよ
977 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 13:43
] [ここ壊れてます]
978 名前::07.31 ID:VYDzXbvz.net mailto: >>928 半角スペースはケアレス、!は全く気にしていなかった。勉強になった。有難う [] [ここ壊れてます]
979 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 22:11:24.00 ID:BnWHDqaq.net] Ruby で作った require 'csv' delete_files = { } # 削除するファイル名を入れる、ハッシュ text = <<TEXT AAB AAD TEXT # 改行区切りで、改行を除去してから、ハッシュに入れる text.each_line do | line | # 各行 line.chomp! # 末尾の改行を削除する next if line.empty? # 空行は処理しない delete_files[ line ] = true end # コロン区切りのCSV 入力ファイルを、1行ずつ処理する CSV.foreach( "bass.csv" ) do |row| # 削除対象ファイルの行は、出力しない puts row.join( "," ) unless delete_files.has_key? row[ 0 ] end
980 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 22:24:44.16 ID:XpqRFBWF.net] 地球はチタマと読むのです
981 名前:899 mailto:sage [2018/10/30(火) 17:29:47.50 ID:GfHx62hK.net] >>923 レスありがとうございます。 OSはwin10x64で実行されたcmdの呼び出し元は C:\Program Files (x86)にあるアプリケーションです %__APPDIR__%はC:\Windows\SysWOW64\ %ComSpec%はC:\WINDOWS\system32\cmd.exe 左上にある窓のtitleは%ComSpec%と同じで、何か変です タスクマネージャーにはコマンドプロンプト(32ビット)と出ます OSから直接cmdを起動したら(32ビット)は出ません OSが自分自身を騙してるのでしょうか たぶん機能上は違いが無いと思いますが
982 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 17:53:27.44 ID:ZaLbntHv.net] その呼び出してるアプリが32bitアプリなのだと予想
983 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 17:57:36.37 ID:GfHx62hK.net] C:\Program Files (x86)なので32ビットですね
984 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 18:58:54.08 ID:ZaLbntHv.net] 64bitOSでの32bitアプリはエミュレーションみたいな物で、32bitアプリから64bitのdllは使えないし、その逆も出来ないようになってる。なのでcmd.comも分けてあるという理由でメモリや動作モード以外の機能差は無いのではなかろうかと
985 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 19:57:27.49 ID:8A3JIwUi.net] 32bitアプリから見た C:\Windows\System32 の実体は C:\Windows\SysWOW64 だから、 System32にあってもSysWOW64にないコマンド(WSL関連とか)は実行できないとか、 環境変数の値がビット数に応じて違うとか、その程度の違い
986 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 22:17:05.55 ID:GfHx62hK.net] 試しに 64ビットでビルドしたコマンドは 普通に動作しました >echo %__APPDIR__% C:\Windows\SysWOW64\ >Hello_World.exe Hello World!
987 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 19:08:48.10 ID:QI0rTSh9.net] 以前は確かsystem32のcmdとSysWOW64のcmdが同じだったんだ そんでもってWinSxSのcmdが違っていた 今はsystem32とSysWOW64が違うんだな WinSxSのはsystem32と同じになってる 手品の種が変った?
988 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 21:11:08.13 ID:lh+glCNV.net] >>926 作ってみた。ファイル名に%がはいらない前提ですが、こんな手もあるということで勘弁願いたい。 @echo off set t=tmp.bat echo type bass.csv^^>%t% for /f "delims=" %%a in ( delete.txt ) do ( echo ^| find /v "%%a,"^^>>%t% ) echo ^>output.csv>>%t% call %t% del %t%
989 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 07:13:18.37 ID:5DVAbKOZ.net] 夜見た時は何をやってるのか分からなかった。 finnd /vをパイプでパターン数繰り返すわけね。
990 名前:デフォルトの名無しさん [2018/11/01(木) 11:22:42.11 ID:06yasLFO.net] %ってファイル名に使えるんだね 半角記号でバッチの挙動に関係するのは「!」くらいしか
991 名前:知らなかったわ。 じゃあ変数名と同じ名前のフォルダ(例えば「%appdata%」)に cdで移動するのは無理って事? [] [ここ壊れてます]
992 名前:デフォルトの名無しさん mailto:sage [2018/11/01(木) 11:39:55.83 ID:OrBUhe7y.net] @echo off md %%appdata%% cd %%appdata%% cd pause