19/11/26 14:51:14 NW9y+uW0.net
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したあとで探す手間いらないですよね?
634:デフォルトの名無しさん
19/11/26 14:55:31 JyI6kWkc.net
>>609
>だってDLしたあとで探す手間いらないですよね?
なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん
ダウンロードディレクトリにあるんだから
脳みそ足りて無くない?
635:デフォルトの名無しさん
19/11/26 14:59:19 NW9y+uW0.net
>>607
!!
調べてみます!
まあそりゃねぇ
管理ナンバー URLっていう100個のリストにある画像集める必要があって
素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら
面倒になってきまして…
ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか
ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。
で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。
599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)
636:デフォルトの名無しさん
19/11/26 15:05:17 NW9y+uW0.net
>>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
637:デフォルトの名無しさん
19/11/26 15:25:21 XdTMGSyO.net
batで外部プログラムの実行完了まで待つ呼び出し方法は
start /wait
って上で誰かが言ってるだろ
638:デフォルトの名無しさん
19/11/26 15:33:34 ISv3uuWx.net
ツリー上に保存しなけりゃいいし
ダウンロードフォルダのルートで
639:*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ
640:デフォルトの名無しさん
19/11/26 15:49:02.22 NW9y+uW0.net
ツリーに保存しないとダメだからそうしてるんだけど。
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。
必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする
それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw
waitはダメでした。
trancefar ~
wait
trancefar ~
は使い方間違ってますか?
trancefar ~複数URL
wait
もだめでした…
641:デフォルトの名無しさん
19/11/26 15:54:58.38 SASMXjiT.net
start "" /wait bitsadmin
でしょ
642:デフォルトの名無しさん
19/11/26 15:56:32 ISv3uuWx.net
いちいち一個ずつ保存先指定するより楽だよ
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい
643:デフォルトの名無しさん
19/11/26 16:10:59 XdTMGSyO.net
とにかくダウンロードが正常に終わるようにならないと先に進めないだろ
ダウンロード時にフォルダが決まるならそれで問題解決だし
外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題
それが可能(例えばファイル名が行番号になってるとか)なら
落とした後にファイルを対応するフォルダに移動すればいい
もちろんbat等の自動化で
644:デフォルトの名無しさん
19/11/26 16:20:26 ImxGWCjG.net
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
urlに&とか%は無いの?
645:デフォルトの名無しさん
19/11/26 16:26:58.84 NW9y+uW0.net
>>617
それ、ブラウザでURL開いて、保存先フォルダ開いてD&Dのほうが早いよ?
今時のブラウザ、コピペと同時に開くんだから。
>>618
それな;
>>616
!
そういう使い方になるのか!ありがとうございます!
でも空ファイルだったw
Dirとmdで生きてるのでもう脳みそ煮えてますわ…
646:デフォルトの名無しさん
19/11/26 16:34:10.52 NW9y+uW0.net
>>619
ある。%20とか?とか。
URLリンク(hoge.hoge.com)
URLリンク(hoge.hoge.com)
こんな感じ。
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・
えっ??まさか%%
647:デフォルトの名無しさん
19/11/26 16:50:52 ISv3uuWx.net
>>620
一個ずつドラッグドロップする気?
648:デフォルトの名無しさん
19/11/26 16:51:59 ISv3uuWx.net
>>618
ダウンローダーなら正常に終わるでしょ
649:デフォルトの名無しさん
19/11/26 16:57:32 XdTMGSyO.net
>>623
一般的なダウンローダなら、urlの末尾がファイル名になるが
名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする
aaa.jpg, aaa(1).jpgのように
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない
これとリストにあるurlとの対応をとるのは大変だと思わん?
650:デフォルトの名無しさん
19/11/26 17:03:32 JyI6kWkc.net
>>624
結局一つずつダウンロードする必要があるだろ?
やっぱり何を探せなないのが全くわからんなぁ
651:デフォルトの名無しさん
19/11/26 17:04:08 ISv3uuWx.net
>>624
重複はツリー上で保存すりゃ起きない
652:デフォルトの名無しさん
19/11/26 17:07:32 NW9y+uW0.net
>>622
その方が早いと言ってます。どっちが早いか試してみたら?
URLリンク(www.yahoo.co.jp) ロゴとその左右のアイコン
URLリンク(www.rakuten.co.jp) ロゴから購入履歴までのアイコン
URLリンク(www.nikkei.com) ロゴと、その下の写真3つ
DL先のフォルダ開く、URLひらく、D&D 3工程
URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程
フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程
653:デフォルトの名無しさん
19/11/26 17:10:41 ImxGWCjG.net
>>621
詰み
&なら "%%~B" とすれば行けたかもだけど
バッチで%~%のエスケープは出来なくないもののかなり面倒くさい
powershellとか行�
654:チた方がいい どうせ自動化するのなら>>612の元listから抽出してDLする方法をPSスレとかで相談してみれば?
655:デフォルトの名無しさん
19/11/26 17:15:21 NW9y+uW0.net
で、私はその3工程ですらめんどくっせーってなって、3工程とも省けんかなと考えた
#今後も同じ作業あるから、今なんとかできてると今後が楽。
ダウンローダーのダウンロード先の問題って、こうなるんだよね
URLリンク(imepic.jp)
ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると
エクスプローラーに行く必要がある
656:デフォルトの名無しさん
19/11/26 17:15:53 ISv3uuWx.net
>>627
エクセルに入れてるってんだから
まとめてURL処理してるんでしょ
D&Dをファイル数分しなくちゃならんのを言ってるんだが
まとめてURL処理してるならD&Dは1回でいい
657:デフォルトの名無しさん
19/11/26 17:18:49.77 NW9y+uW0.net
>>628
うへwわろすwそういうことか!
Powershellはこっち以上に全くわからんな…
画像リストはGoogleスプレッドにぶんなげて作れてはいる
ありがとう
658:デフォルトの名無しさん
19/11/26 17:19:23.77 ImxGWCjG.net
0バイトになるのは書き込み権限とか
管理者で実行しても変わらない?
659:デフォルトの名無しさん
19/11/26 17:23:52.25 NW9y+uW0.net
>>632
transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える
transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが
ここが0/0のままで次を始めてしまう
Wait入れようが、Pauseいれようが、そこは同じですね
660:デフォルトの名無しさん
19/11/26 17:42:23 NW9y+uW0.net
>>631
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で%
を置き換えてやることにします。
ヒントありがとうございました。
みなさまもたくさんヒントありがとうございました。
661:デフォルトの名無しさん
19/11/26 17:50:12 XdTMGSyO.net
>>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"
)
662:デフォルトの名無しさん
19/12/07 09:30:10 /m01ABgd.net
>>634
おい逃げるなよ
663:デフォルトの名無しさん
19/12/08 23:47:18 wNkvi2te.net
>>636
こわいよw
もはや逃げることはできぬぞ、か。
664:デフォルトの名無しさん
19/12/09 14:56:56 0+3TB6cR.net
トレンドに#業務ハックというのが上がってた。フーン
ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは
まさかしていませんよね?
665:デフォルトの名無しさん
19/12/10 05:01:38.65 CfjKoCjD.net
無理そうな気はしつつも質問
苗字<tab>名前<tab>年齢<tab>住所
田中<tab>太郎<tab>27<tab>大阪
山田<tab>花子<tab><tab>東京
佐藤<tab><tab>35<tab>
こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど
tokens=2,4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね
これはもうvbsやVBAじゃないと無理ぽかな
666:デフォルトの名無しさん
19/12/10 07:15:07 BTxKZMwl.net
>>639
delimsに指定してもダメなの?
667:デフォルトの名無しさん
19/12/10 07:44:27 CfjKoCjD.net
半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー
668:デフォルトの名無しさん
19/12/10 09:16:41.59 3V5uc2tI
669:.net
670:デフォルトの名無しさん
19/12/11 01:05:38 hz4JPg2Q.net
おお、値の無い列には半角スペースを入れてしまうわけか
こりゃ気付かんかったサンクス
671:デフォルトの名無しさん
19/12/13 01:06:30.14 7bx1tfw6.net
バッチでフォルダの表示方法とかかえられないよ?
詳細にして 表示の種類に長さとか大きさとか
いれたいんだけど
それをワンクリックでやりたい
URLリンク(i-bitzedge.com)
名前とか日付のとこに 長さとか大きさを追加するってことね
672:デフォルトの名無しさん
19/12/13 01:06:50.17 7bx1tfw6.net
かえられないよの?
673:デフォルトの名無しさん
19/12/13 04:06:09.26 t9dRWycX.net
>>645
レジストリ値弄れば出来たと思う。
昔職場の環境統一するのに使ってた。
詳細はRegshotとかで差分とって。
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。
674:デフォルトの名無しさん
19/12/13 04:07:58.73 t9dRWycX.net
>>645
設定後にShellの再起動も必要だったかも。
675:デフォルトの名無しさん
19/12/13 06:18:44.99 SOm460Ps.net
>>646-647
レジストリか
なるほど
ちょっと色々調べてみます
676:デフォルトの名無しさん
19/12/19 16:55:31 l8jrOhSU.net
こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
まあ実用上の問題は無いんですが
@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause
677:デフォルトの名無しさん
19/12/19 17:08:49.51 TZP99wd2.net
ピリオドとかコロンじゃなくて、カンマとかセミコロン使えばいいよ
678:デフォルトの名無しさん
19/12/19 17:16:19.46 TZP99wd2.net
イコールもお仲間で、この3つが特別区切り記号らしいよ
679:デフォルトの名無しさん
19/12/19 17:18:33.06 l8jrOhSU.net
>>650
はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました
680:デフォルトの名無しさん
19/12/19 17:23:09.51 TZP99wd2.net
特別区切り記号だから
681:デフォルトの名無しさん
19/12/22 19:05:52.87 DvnYZkai.net
/rが悪さをしてるんじゃね
サブフォルダの中でピリオドを2個にして
682:デフォルトの名無しさん
19/12/23 21:26:36.07 qZ1/nSQb.net
startコマンドでAPを起動後、「F11」をバッチファイルから入力するには、どう記述すればいいのでしょうか?
683:デフォルトの名無しさん
19/12/25 01:34:54.95 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:デフォルトの名無しさん
19/12/25 11:28:21.34 E0w5VXt3.net
>>656
ワラタ
685:デフォルトの名無しさん
19/12/25 12:39:52.06 32sm7KoS.net
>>656
すごいな、プロ?
686:デフォルトの名無しさん
19/12/26 00:38:52.07 ocAthgHy.net
ウイルスに使えそうw
687:デフォルトの名無しさん
19/12/26 18:09:54.44 gPRn8RL/.net
職業 プロバッチファイルスクリプター(自称)
688:デフォルトの名無しさん
19/12/27 00:09:22.71 CW1qzWXe.net
%1がフォルダ名の場合、サイズを示す%~z1は0以外の数字になる
何を表しているのか不明
689:デフォルトの名無しさん
19/12/27 07:50:28.51 sZ8rOkNi.net
エントリーレコードのsizeじゃね?テキトーmaybe
690:デフォルトの名無しさん
19/12/28 12:01:21.14 c8Bqzbdx.net
>>662
そんな数字が多いですね
\windows\winsxs や * だと違う表示も出るので意味不明、バグなのか
691:デフォルトの名無しさん
20/01/02 17:54:09.99 LCDlLvJS.net
for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください
dir /tc 何か | findstr findstr /e /c:"<DIR> ."
みたいにして取り出して整形するのは何か間違えている気がしてならないので
692:デフォルトの名無しさん
20/01/02 20:56:32.19 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:デフォルトの名無しさん
20/01/02 20:59:21.16 gZNl6+48.net
修正
%a→%%a
echo %%a%%b%%c%%d%%e
694:デフォルトの名無しさん
20/01/03 08:18:43.19 6GenP8Ub.net
ありがとうございます
何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう、
って話になるんですね、ミリ秒単位までいけるみたいですし
695:デフォルトの名無しさん
20/01/03 09:56:56.50 +cYn5CAB.net
forfiles でフォルダの更新日時も得られる、ただしファイルが多いと遅い
forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
dirだと得られない秒もOK、仕様がばらばら、バッチは不思議
696:デフォルトの名無しさん
20/01/03 13:02:11.21 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:デフォルトの名無しさん
20/01/04 01:23:14.19 /SGph6WX.net
dir ?
親DIRがピリオド2文字なのに
なぜ表示されるのか
698:デフォルトの名無しさん
20/01/04 07:59:26.77 T5YxFwCT.net
. と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ
だから .. の(作成|更新)日時は自ディレクトリと同じ
.. は親ディレクトリを指し示すが親ディレクトリとは別のモノ
なぜと問われても、そういう仕様だから、としか
699:デフォルトの名無しさん
20/01/04 09:10:30.39 /SGph6WX.net
>>671
ピリオドは区切り文字であり、
ワイルドカードの?の文字数のカウントに含まれず。
ピリオドが先頭だと、最初のトークンは空文字列となり、
?は一文字以下の文字列を表すので、それに合致するわけかな。
ちなみに >>670 はそれより前のレスとは無関係
700:デフォルトの名無しさん
20/01/05 07:41:36.68 QOfK3b7c.net
>>670
dir /b ? だと表示しない謎
701:デフォルトの名無しさん
20/01/06 09:00:53.84 VNkic2h1.net
ディレクトリと同じ扱いだから
702:デフォルトの名無しさん
20/01/06 09:51:26.33 8LUwvv7f.net
先頭にドットがあると要注意だよな
ワイルドカードがドットを無視する場合があるから
>copy nul .txt
>copy nul txt
>dir/b
.txt
txt
>del txt*
>dir
ファイルが見つかりません
703:デフォルトの名無しさん
20/01/08 10:00:17.73 cX66OF4O.net
簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって、なんでbatで書いちゃったんだろってなるのいい加減�
704:竄゚たい
705:デフォルトの名無しさん
20/01/09 05:17:30.74 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:デフォルトの名無しさん
20/01/09 07:12:55.26 hqwlnXXW.net
>>676
PowerShellでいいんじゃね?
707:デフォルトの名無しさん
20/01/17 04:34:01.53 AQjsaOZ5.net
ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど
win10です
テスト.bat
-----------------------
@echo off
for %%f in (%*) do (
echo %%f
)
pause
--------------------------
だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
ちなみに
@echo off
echo %1
pause
だけだとちゃんとフルパスで表示されます
%%と%の違いってなんですか?
708:デフォルトの名無しさん
20/01/17 05:40:03.52 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:デフォルトの名無しさん
20/01/17 08:29:31 B/evOggr.net
shift使わない方法でお願いします
710:デフォルトの名無しさん
20/01/17 08:39:02 FVJQifjo.net
>>679
その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて
引数がクオートされていない場合に上手く行かない
がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認
711:デフォルトの名無しさん
20/01/17 18:45:30.02 Xdf1G9+g.net
WSLって専用スレあったりする?
712:デフォルトの名無しさん
20/01/17 18:48:00.37 T5MzU9c3.net
>>680
あー>>680のやり方の方がいいわせか
>>682
できましたありがとう
713:デフォルトの名無しさん
20/01/18 06:36:29 77YAYmoS.net
>あー>>680のやり方の方がいいわせか
そうじゃない。いいも悪いもない。こういう方法もあるよと提示しただけ
バッチはどうやってもバグを内包する。極論動けば何でもいい
バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる
そういったのを理解した上で簡単な事をやるくらいならいいけど
少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる
面倒を避けたいなら初めからPowerShellとかでやった方がいい
今から覚えるなら尚更
714:デフォルトの名無しさん
20/01/18 08:02:35 UuH5oHRt.net
>>679
ドラッグ&ドロップ したファイル名に
たぶん ) があるんだろう
a(1).txt
とかね
なぜ落ちるか自分で考えてみろ
715:デフォルトの名無しさん
20/01/18 23:29:59.70 jJ2WRqDf.net
>>686
それな
バッチはこういう罠があるからPSに移行したわ
コメント欄に迂闊に括弧も使えないしこわいこわい
716:デフォルトの名無しさん
20/01/23 20:57:19.47 qiuXI8ht.net
ネストされた環境変数が展開されない事象について
URLリンク(social.technet.microsoft.com)
717:デフォルトの名無しさん
20/01/26 21:47:29 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:デフォルトの名無しさん
20/01/26 23:31:16 Jc09ZNe5.net
そんなことまで無理にcmdでやらんでも・・・
WinMergeすら入れさせてもらえない環境なのか?
720:デフォルトの名無しさん
20/01/27 09:15:34 +0QHC3Wk.net
日記?
721:デフォルトの名無しさん
20/01/28 22:49:16 lbmGsP+l.net
"送る"って意外と不自由なんだな…
バッチファイルでワンクッション入れて(゚д゚)ウマー
722:デフォルトの名無しさん
20/01/28 23:14:40 Vj4Y99PX.net
何が不自由なの
723:デフォルトの名無しさん
20/01/30 20:40:29.71 6k+E856c.net
このバッチで何か入力しても a が消える
@echo off
set /p a=data=
rem %a=%
echo data=%a%
pause
724:デフォルトの名無しさん
20/01/30 22:45:14 VR7HU+gm.net
>693
勉強不足があるかも知れんが
・さっさと画面を閉じちゃう(cmd/kで回避)
・%1に入れてくれない
・ファイル名の後ろにオプションが付けられない
725:デフォルトの名無しさん
20/01/30 23:26:29 D5cDwkr0.net
ワンクッションってそういう意味か
昔からスクリプトを送るに登録することなんて当たり前のことだったけどね
むしろexeしか登録しない人はこのスレにはいないとまで思ってた
726:デフォルトの名無しさん
20/01/31 11:16:38 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:デフォルトの名無しさん
20/02/09 18:23:32 62ExnvKA.net
叩いたらスクリーンセーバーをオフにしたく、killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど、Windows10のタブレットモードで動かすとスタートメニューが起動してしまう。
元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな?
ソフトを立ち上げっぱなし→スクリーンセーバー起動→条件下でスクリーンセーバーkillバッチ→立ち上げてたソフトに戻る
ってのにしたいのにkillバッチ→スタートメニューになってしまう
あと、バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない…
728:デフォルトの名無しさん
20/02/10 13:13:43 0DoxGo8j.net
スクリーンセーバー動いてるのに、
どうやってバッチ叩いてんの?
さっぱりわからん
729:デフォルトの名無しさん
20/02/10 23:18:37.16 B/3TWI1a.net
>>698
ネタだよね?
730:デフォルトの名無しさん
20/02/11 12:30:00.59 DitzTCfU.net
何かをトリガーにしてタスクから叩くって事じゃないかな
731:デフォルトの名無しさん
20/02/11 17:11:28 DSTYXSth.net
特定のキー操作で解除するタイプのスクリーンセーバーなのかな?
でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど
732:デフォルトの名無しさん
20/02/11 17:51:57.47 hksaF/sY.net
Windows7標準のmklink
733:でシンボリックリンクを作ると リンクのタイムスタンプ(作成、更新、アクセスいずれも)は リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり 普通のファイルのようにはタイムスタンプを変更できないようだけど 変更する方法ある? ハードリンクなら同じものを見ることになるから勝手に揃うけど 使い分けの方針が定まらなくてあまり使ってない
734:デフォルトの名無しさん
20/02/11 23:47:43 9k84sg+E.net
>>703
シンボリックリンクの実体はファイルだからSetFileTimeで変更できるらしいぞ
らしいってのは俺がシンボリックリンクつかったことないからね
735:デフォルトの名無しさん
20/02/14 23:11:39 2Mmdz3hG.net
Windows Vistaは2017年にサポートが終了しましたがWindows Server 2008向けのセキュリティ更新プログラムを手動でインストールすることができていました。
ところがどの順番でどれをインスコすればいいのか面倒、、、それを解決するバッチプログラムを作った方がいます。
バッチファイルの記述がフムフム、へぇ~という感じで自分にはとても勉強になりました。興味ある方はどぞ
創造の柱
URLリンク(blog.livedoor.jp)
736:デフォルトの名無しさん
20/03/24 10:56:05.36 .net
このスレで聞くべきなのか分かりませんが、Windowsで数千個のPDFを一括処理したいので、取りあえずここで聞いてみます。
PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で、"表示"、"ページレイアウト"、"倍率"を設定できますが、
1つ1つ手作業で設定するのはさすがに無理です。
Javaの様なプログラミング言語でも、他のアプリでも何でもいいんですが、この文書のプロパティを一括で設定する方法って何がありますか?
737:デフォルトの名無しさん
20/03/24 18:54:16 k6OnWQi4.net
それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?
738:デフォルトの名無しさん
20/03/24 19:52:05 LC2xv/4E.net
変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね
739:デフォルトの名無しさん
20/03/24 20:27:13.25 .net
>>707
Acrobat側の表示方法を変えるのじゃ無く、PDF側で変えたい
740:デフォルトの名無しさん
20/03/24 20:53:17.46 k6OnWQi4.net
そもそもPDF側に表示方法が保存されてるものなの?
結局Acrobat側の問題じゃない?
741:デフォルトの名無しさん
20/03/24 22:35:05.89 tH0Sn0AY.net
「pdf コマンドライン ページレイアウト」でググったら
cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた
これ、見開きを縦スクロールにしたり単ページにしたりできて面白い
"倍率" が 2017/10 の時点で無理らしいけど
742:デフォルトの名無しさん
20/03/26 01:20:56.78 3WOBAGMl.net
ID消して質問してるのがすげー腹立つな
本当に解決を望んでるなら逆にコテ付けるぐらいできんのか
743:デフォルトの名無しさん
20/03/30 02:44:24 X7klH3J+.net
windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど
744:デフォルトの名無しさん
20/04/18 11:05:03 6HUykZ9A.net
今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな
いちいちコードページ指定するとなんかウィンドウが切り替わって重いし
cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
745:デフォルトの名無しさん
20/04/18 14:03:40.50 a+OnqKl3.net
MSはレガシーのために保守してるだけだろ
powershell使え
746:デフォルトの名無しさん
20/04/18 16:57:49 Vod
747:BEB+r.net
748:デフォルトの名無しさん
20/04/18 17:12:48 fYZW+FI9.net
このスレで、utf-8 のバッチファイルにするなら、
行末は半角英数な文字にしとけ
というのを学んだ、>>262 からの流れ
なんでなのかはいまだに知らない
749:デフォルトの名無しさん
20/04/18 17:22:50 D5FH+wQt.net
2つめのechoがエラーになってるね
echo テスト
echo テスト
と間に空白行を挟めば正常だがどういう理屈なのか分からん
750:デフォルトの名無しさん
20/04/18 17:31:32 VodBEB+r.net
れすサンクス
751:デフォルトの名無しさん
20/04/21 19:56:52 vK3trFFL.net
%2つというのは、何らかのエスケープですか?
また、forを使うときにfor %iなどとしますが、%の意味がよくわかりません
752:デフォルトの名無しさん
20/04/21 21:11:11 vK3trFFL.net
フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか
forを使用してインデックスを連番として付与する感じだと思うんですが
ファイルはこんな感じです
犬.txt
猫.txt
猿.txt
753:デフォルトの名無しさん
20/04/21 21:17:03.32 FdhLTsrP.net
>>720
%は互換性や拡張などのおかげで大変ややこしい事になっている
説明するには小一時間かかるのでここでは控える事にする
754:デフォルトの名無しさん
20/04/21 21:26:09.14 M3jMZi3+.net
>>720
%は変数を定義する時に使うよ %iで「iという変数」になるよ
バッチプログラムで使う時は%%iにする必要があるよ
URLリンク(www.pg-fl.jp)
「%」のページも読んだ方が良いよ
755:デフォルトの名無しさん
20/04/21 22:46:58.98 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:デフォルトの名無しさん
20/04/21 22:54:20 h/bjIQIw.net
rubyはスレ違い
757:デフォルトの名無しさん
20/04/21 23:04:39.20 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:デフォルトの名無しさん
20/04/21 23:14:39.66 J0u+GdjC.net
リネームは結構難しい
リネーム後のファイルが再びリネーム対象となる場合がある
759:デフォルトの名無しさん
20/04/21 23:27:06 alPdontK.net
set N=1000
:LOOP
if "%~1"=="" exit /b
set /a N+=1
ren "%~1" "%N:~-3% %~nx1"
shift
goto :LOOP
760:デフォルトの名無しさん
20/04/21 23:28:37 s3lLVMWt.net
リネーム後のファイル名が既存だったりするし
761:デフォルトの名無しさん
20/04/21 23:49:32 GY5lnYbX.net
リネームは一覧を一旦ファイルに出力してから回した方が安全だよ
それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ
762:vbsかjsかpowershell
763:724
20/04/21 23:57:26 HADG6GDb.net
>>724
のRuby では最初に、Dir.glob( "C:/Users/Owner/test/*" )
で、そのフォルダ内のすべてのファイルを取得しているから、
各ファイルを、rename していく途中で、
rename後のファイルを、再びrenameすることはない
764:デフォルトの名無しさん
20/04/22 00:04:16 vEO7RF6u.net
>>730
ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね?
UNICODE文字は関係あるかね?
765:デフォルトの名無しさん
20/04/22 06:52:59.32 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:デフォルトの名無しさん
20/04/22 09:12:13 UZ0N9G3p.net
>>732
>UNICODE文字は関係あるかね?
SJISに含まれてない文字が入ってると酷いことになる
767:デフォルトの名無しさん
20/04/22 10:16:03 MJO3kN2U.net
駄目文字のせいでSJISコードがバグると言うならまだわかるが
その逆って意味がわからないな
MSは全くテストしてないってことか
768:デフォルトの名無しさん
20/04/22 11:07:12 /W5c3Vma.net
>>722-735
どうも
勉強中です
769:デフォルトの名無しさん
20/04/22 11:53:22 /W5c3Vma.net
複数行を一行にまとめる場合は、&でつなぐんでしょうか?
これが改行と同じ意味でしょうかね。
770:デフォルトの名無しさん
20/04/22 12:07:17 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:デフォルトの名無しさん
20/04/22 19:08:42.79 nR8TNEgs.net
>>737
複数行をまとめるって、、
文字列の足し算の話?
コマンドを複数行に分割して記述する話?
(継続文字のこと?)
772:デフォルトの名無しさん
20/04/22 19:11:46 nR8TNEgs.net
>>739
または複数コマンドを一行で記述する話?
773:デフォルトの名無しさん
20/04/22 20:05:53.95 j1ZYXyL3.net
>>735
コマンドプロンプトは自体はUNICODE対応
各種コマンドもUNICODE対応
だけどバッチファイルは過去の互換性が必要なので
デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる。
その設定はchcpで変えることが出来る
単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが
forでバッチファイルの世界に招き入れたら、
chcpの設定によって文字コードの変換が行われる
テストはしてるだろ。この文字コード変換は仕様なので
バッチファイルでUNICODE文字を扱いたければchcpで
UTF-8に変更しなければならないというだけのこと
774:デフォルトの名無しさん
20/04/23 06:47:17 153+oMoq.net
>>739
バッチファイルではなくて、複数行をコマンドプロンプト上で実行したい場合があったりします
775:デフォルトの名無しさん
20/04/23 08:24:04.38 5iduMLE+.net
>>742
複数行をコピペじゃ駄目なの?
例えば、この内容をメモ帳に記述しておいて
rem ―- ここから ―
dism /online /cleanup-image /restorehealth
sfc /scannow
rem ―- ここまで ―-
4行をコピペする
776:デフォルトの名無しさん
20/04/23 09:07:36 Z6s7Y3Lu.net
>>742
複数コマンドを1行で実行したいということなら、、、
A & B ... A実行後にBを実行
A | B ... Aの実行結果をBに渡して実行
A && B ... Aが成功したらBを実行
A || B ... Aが失敗したらBを実行
長いコマンドを複数行に分割したいなら、、、
Sentence1 ^<改行>
Sentence2
(サーカムフレックスで継続)
777:デフォルトの名無しさん
20/04/23 12:04:05.59 qTwHi2aC.net
()で囲めばいい。
(timeout /t 300
cd d f:\hoge
for %f in ( *.jpg ) do (
・・・
)
)
正式名称が何かは知らないが勝手にブ
778:ロックと呼んでる。
779:デフォルトの名無しさん
20/04/23 14:59:02.07 WFX6w8Jo.net
>>744
そういうのがあるのか、| 以外知らなかった
780:デフォルトの名無しさん
20/04/23 14:59:42.71 WFX6w8Jo.net
>>745
これも知らなかった
781:デフォルトの名無しさん
20/04/23 15:25:29.03 153+oMoq.net
>>743コピペでももちろんいいですが、知っておきたかったです
782:デフォルトの名無しさん
20/04/23 16:03:20.39 eZrYYRVL.net
なんでバッチ嫌なの?
783:デフォルトの名無しさん
20/04/23 17:31:56.25 P2MaiEJS.net
>>748
だったらこんなところで聞くんじゃなくて
一次資料に当たる努力をしなよ
784:デフォルトの名無しさん
20/04/23 21:20:47 M8I+Acr1.net
>>745
それ駄目。
遅延変数展開しないと痛い目に遭うよ。
785:デフォルトの名無しさん
20/04/26 18:05:24 FVxXRtXH.net
連番をつけるコードでまだ躓いています
hoge.txt
hogehoge.txt
を
hoge(1).txt
hogehoge(2).txt
としたいです
echo off & for %i in (*.txt) do (ren %i ???)
このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?
786:デフォルトの名無しさん
20/04/26 18:36:58 FVxXRtXH.net
バッチでset /aなどのオプションがありますが、/aは計算を伴う場合に使うそうです。
この/aに意味はあるのですか?
何らかの単語の略だと覚えやすいんですが。
787:デフォルトの名無しさん
20/04/26 18:40:50 Pfsg7A5O.net
その程度ぐぐれば出てくるでしょ
インデックスのカウント用変数が必要+変数の遅延展開
丸括弧のエスケープが必要
aはarithmeticの略
788:デフォルトの名無しさん
20/04/26 20:15:42 cczyU4e/.net
@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
789:デフォルトの名無しさん
20/04/26 22:00:20.95 zKIVBOto.net
1Point ノウハウ
dir ですべてのファイル、フォルダを表示したい場合は
dir /A
790:デフォルトの名無しさん
20/04/26 22:18:32 DxwpR+0O.net
普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの?
何か理由あるん?
791:デフォルトの名無しさん
20/04/26 22:22:15 YV1WqKFq.net
>>757
ファイル名に「%」入ってるとマズくない?
792:デフォルトの名無しさん
20/04/28 05:49:29 ceHl0duT.net
シェルスクリプトってお手軽省略表記にこだわりすぎるあまり
エスケープ処理が複雑化しバグりやすくなって本末転倒だよな
793:デフォルトの名無しさん
20/04/28 05:57:02 l2PF55i3.net
そんなところで躓く能なしは、他の言語で書いても同じだよ
794:デフォルトの名無しさん
20/04/28 13:01:40 DKHJb1hS.net
他の言語でもエスケープは必要なことはあるし同じこと
ただbatのように自身を置換して逐次実行するするようなことは
eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ
795:デフォルトの名無しさん
20/04/28 16:44:00 3RXW9/E3.net
要するに分かりにくい
ここで初心者にイロハから質問されてもレスがしにくい
リネームソフトでも使え
796:デフォルトの名無しさん
20/04/28 17:37:46 7TaGv6sC.net
>>759
シェルスクリプトでエスケープ処理が複雑なんて
したことがないんだがどういうケース?
むしろバッチファイルのほうがややこしすぎる
バッチファイルでダブルクォートはいつつけるか言える?
スペースが含まれたファイル名とか
バッチファイルでこれの出力結果は
echo "C:\Program Files"
↓これです。(ダブルクォート含む)
"C:\Program Files"
797:デフォルトの名無しさん
20/04/28 18:05:03 3RXW9/E3.net
どういうケースって、すぐ上の奴だろ
798:デフォルトの名無しさん
20/04/28 18:18:07 7TaGv6sC.net
>>764
もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
799:デフォルトの名無しさん
20/04/28 18:19:14 7TaGv6sC.net
シェルスクリプトっていうのはUnixやLinuxの
/bin/shとかbashのことなんだが
800:デフォルトの名無しさん
20/04/28 18:20:52 RB8xSOb3.net
ファイル数�
801:墲ゥらんけどリネームソフト使えば一分かからんで終了
802:デフォルトの名無しさん
20/04/28 20:35:28 C/yTg51l.net
>>766
俺の定義ではバッチファイルはシェルスクリプトだ
config.sysに
shell=command.com /e:1024
とか書いてたからな
803:デフォルトの名無しさん
20/04/28 20:39:22 C/yTg51l.net
ちなみにMS-DOSにはエスケープ文字なんて無い
804:デフォルトの名無しさん
20/04/28 20:40:45 f4hk4dsD.net
>>768
意味わかんないから調べたが、
今では全く通用しない話じゃねーかよ。
てめーの定義を押し付けんな。
805:デフォルトの名無しさん
20/04/28 20:51:25.37 l2PF55i3.net
>>770
頑張ってググってきたんだからほめてやれよ
806:デフォルトの名無しさん
20/04/28 22:38:03.31 0mXw36Cx.net
>>769
Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。
807:デフォルトの名無しさん
20/04/28 23:55:09.09 3RXW9/E3.net
cmdはシェルだ。定義も糞もない
808:デフォルトの名無しさん
20/04/29 00:05:03 kLiglYQz.net
>>768
cmdじゃないじゃん
809:デフォルトの名無しさん
20/04/29 06:34:57 bLWOmnfL.net
UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ
shやbash=cmd
シェルスクリプト=バッチファイル
シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
810:デフォルトの名無しさん
20/04/29 06:56:52.10 SXZJio07.net
とはいえ逆にunixでバッチがどうとか言うと違和感あるしな
>>766みたいな感覚が一般的
811:デフォルトの名無しさん
20/04/29 07:15:11 sus1L+2H.net
>>775
> シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前
シェアならLinuxのシェルスクリプトの方が多いよ
今はsystemdに置き換えられつつあるが、起動処理の多くで
シェルスクリプトが使われていた。
各アプリのビルドなどでもシェルスクリプトは使われている。
それに対してバッチファイルは殆ど使われていない。
そもそもWindowsのコマンドは、他のコマンドの出力を読み取って
別のコマンドで処理するように設計されていない
単に呼び出すだけ。だからバッチファイルという名前になってる
例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合
なにも表示されないのでスクリプトとして使いやすいが
Windowsのcopyは人間用のメッセージがいちいち出る
コマンドの出力を変数に入れるだけでも大変
遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる
そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を
するためだからバッチファイルはシェルスクリプトだけでなく
PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている
一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが
面倒になってるので両立してるシェルスクリプトにはかなわない
812:デフォルトの名無しさん
20/04/29 07:22:12 VzuV0Enx.net
アスペがうだうだ言ってるだけで全く「会話」が進行していないな
813:デフォルトの名無しさん
20/04/29 07:36:25.95 SXZJio07.net
スレチだから、もうやめろ
814:デフォルトの名無しさん
20/04/29 07:51:09.96 sus1L+2H.net
やなコッタ
815:デフォルトの名無しさん
20/04/29 22:15:38.24 f6LPbIhG.net
パンナコッタ
816:デフォルトの名無しさん
20/04/29 22:43:10 sus1L+2H.net
メロンパンナ
817:デフォルトの名無しさん
20/04/30 00:25:02 6g7fIyNp.net
マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢
818:デフォルトの名無しさん
20/04/30 23:56:54 4NDFLh29.net
アッサムティー好き、いいよね
819:デフォルトの名無しさん
20/05/01 20:45:42 I+dUmCMk.net
カタコッタ
820:デフォルトの名無しさん
20/05/07 18:46:37 jiFNKMfo.net
滅茶苦茶初歩的な質問ですまん
バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
821:デフォルトの名無しさん
20/05/07 18:51:16 cw3NlGJG.net
FOR /F ["オプション"] %変数 IN
822:('コマンド') DO コマンド [コマンド パラメーター] または usebackq オプションの場合: FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]
823:デフォルトの名無しさん
20/05/07 18:51:30 jiFNKMfo.net
もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい
824:デフォルトの名無しさん
20/05/07 19:01:03 jiFNKMfo.net
>>787 ありがとう、いけたわ
logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど、これは他の問題かもしれんな
825:デフォルトの名無しさん
20/05/07 19:33:24 lct9jPsZ.net
昔だったら tail -f
826:デフォルトの名無しさん
20/05/07 19:34:28 2gF3mugX.net
>>789
標準出力じゃなくて、標準エラー出力の方にprintしてるんだろ
('py foo.py 2^>^&1')
827:デフォルトの名無しさん
20/05/07 19:47:29.96 jiFNKMfo.net
logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた
出力取得できたのでまあよし
828:デフォルトの名無しさん
20/05/07 20:17:47 2gF3mugX.net
>>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
829:デフォルトの名無しさん
20/05/12 09:27:08.95 hWMQZbFi.net
>コマンドプロンプト入門 Kindle版
2020年にこれを出すとはチャレンジャーすぎるな
830:デフォルトの名無しさん
20/05/12 16:03:14 PeLhefIP.net
amazonで、確認すると、2019/09の出版みたいですね。
どうせなら、power shellの本出したほうが良かったかも。
831:デフォルトの名無しさん
20/05/12 18:45:23 NJ7uTfC9.net
ファイル名に「b」を含むファイルをコピーするときに
たとえば
abc.txt というファイルがあって
copy *b*.txt def.txt
がオッケーで
copy *b* def.txt
がエラーなのはなぜですか?
*は0文字以上の文字列なので
両方とも成功すると思っていたのですが
832:デフォルトの名無しさん
20/05/12 19:05:09 fhydWmjd.net
>>795
KindleストアにPowerShellのがいっぱいあるやん
833:デフォルトの名無しさん
20/05/12 19:55:35 UaCqmgBQ.net
>>796
普通にできるけどどんなエラーが出るの?
ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな
834:デフォルトの名無しさん
20/05/12 19:59:26 fhydWmjd.net
*b* が一つでもゴミが付くしね(0x1A)
835:デフォルトの名無しさん
20/05/23 20:41:18.51 H5g1ckea.net
Windows Terminal で音を鳴らすにはどうすればいいですか
コマンドプロンプトではControl-Gを出力してたんですが
Windows Terminalでは無視してくれやがります
836:デフォルトの名無しさん
20/05/23 22:23:07.24 105ldQbQ.net
start beep.wav
837:デフォルトの名無しさん
20/05/23 22:45:59.81 H5g1ckea.net
そんなんだったら
>copy con beep.cmd
echo ^G
waitfor /T 3 waiting
^Z
1 個のファイルをコピーしました。
>start /min cmd /d/c beep.cmd
とするけどもっといい手はないかなと
838:デフォルトの名無しさん
20/05/23 23:00:15 H5g1ckea.net
ああstartで自分を呼んで鳴らせばいいんだ
自己解決しました
839:デフォルトの名無しさん
20/05/24 00:25:04.68 VYuvM9gt.net
>>802
echo ^G>beep.dat
としておいて
type beep.dat
beep.dat は 0x07 (1byte)だけ
840:デフォルトの名無しさん
20/05/24 00:40:12.55 f4O9jhZ+.net
その手がWindows Terminalでは使えないって話
URLリンク(aka.ms)
Windows ターミナルの概要 | Microsoft Docs
841:デフォルトの名無しさん
20/05/24 00:46:46 VYuvM9gt.net
>>805
そうでしたか
Windows Terminal、使うか
842:デフォルトの名無しさん
20/06/03 20:30:01 H
843:abAm56l.net
844:デフォルトの名無しさん
20/06/03 20:31:25 5eIQQTQm.net
勉強でなら、そりゃそうだろと言うしかないね
845:デフォルトの名無しさん
20/06/03 20:32:34 HabAm56l.net
実務上はどうです?
バッチの方が情報多いからいいんですか?
846:デフォルトの名無しさん
20/06/03 21:04:50.01 mm84GRB0.net
>>809
どういう現場か知らないけど
Widn7 SP1 PSv2 縛り
なんて現場でPS書きたいとか思わないね。
使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。
847:デフォルトの名無しさん
20/06/03 21:27:53 QZ+HyrOs.net
シコシコかくのよ
848:デフォルトの名無しさん
20/06/03 22:11:19 JNM2fzED.net
PSでできること=C#でできることだからバッチとは全然できることが違うよ
PSv2でも十分バッチとは天地の差がある
849:デフォルトの名無しさん
20/06/03 22:22:36 5eIQQTQm.net
元の質問が、「バッチでやるような処理でも」なんだけどな
ちゃんと読んでるか?
850:デフォルトの名無しさん
20/06/03 23:24:38 Gm6SBE/O.net
>>809
情報量ならPowerShellの方が上だし
TechnetフォーラムならPowerShellのカテゴリーあるし
ポケットリファレンスの著者である牟田口大介まで出没している
ストアアプリのインストールとかはPowerShell必須だし
バッチのみじゃ書けない物も割と多い
処理の内容は忘れたけどバッチでやれた事を
PowerShellで書いたらキー入力を要求されて
かえってバッチの方が良かった場合もあるけど
そんなパターンは圧倒的に少ないと思う
でもウチの場合、PowerShell使いがいないから
というのが最大の理由で実務はバッチだらけ
良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき
個人の感想ならばPowerShellって
バージョンが上がって非互換が出そうなので避けたい
851:デフォルトの名無しさん
20/06/04 09:41:35.56 Di3Z81qX.net
9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ
意識していれば、バッチファイルの利用は難しくないと思う。
VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ
気をつけていれば概ね大丈夫だと思う。
それらに比べてPowerShellは、個人的にはハードルが極めて高い。
852:デフォルトの名無しさん
20/06/04 15:05:12.56 iofqxoab.net
>>813
当然「バッチでやるような処理でも」PSなら十二分にこなせるよ
このスレで話題になるような変なクセや制限もないしね
853:デフォルトの名無しさん
20/06/04 15:12:12.70 iofqxoab.net
>>814
PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ
854:デフォルトの名無しさん
20/06/04 15:16:33 efimIni8.net
BATの典型的なものとしては
シーケンシャルに
・外部アプリ呼び出し
・ファイルコピーや移動
・メッセージ表示
であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる
855:デフォルトの名無しさん
20/06/04 21:18:27 U7KCPoET.net
PSの話したいなら該当スレへ
ここでするのはスレチ
856:デフォルトの名無しさん
20/06/05 09:26:58 YNSaAEsR.net
バッチファイル内で、複数の文字列の一部だけを羅列して、それをまとめて補完したものを変数に入れたい
具体的には
set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat %LOG%\newsplus\*.dat ...
のように指定するのではなく
setlocal enabledelayed...
for %%f in (tech prog win
857: newsplus) do ( set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat ) のようにして、増減や修正を簡単に出来るようにしたい したいんだけど、なんかうまく動いてくれない 何かヒントもらえますか?
858:デフォルトの名無しさん
20/06/05 10:14:13 YNSaAEsR.net
自己解決
どうやらこんな感じで動きそう
for %%f in (tech prog win newsplus) do (
call :APPEND %%f
)
:APPEND
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
goto :EOF
859:デフォルトの名無しさん
20/06/05 11:33:35 xkF+o6Lc.net
>>820
setlocal enabledelayedexpansion
for %%f in (tech prog win newsplus) do (
set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
)
じゃダメなの?
860:デフォルトの名無しさん
20/06/05 11:53:35.34 YNSaAEsR.net
あれ?出来ますね
実は!で囲むのもやってみた(つもりだった)んだけど
(たぶん、どっか別のちょっとしたところでミスしてて)
その時はうまく動かなかったんですね
失礼しました
861:810
20/06/06 00:36:10 ZNTMwsEj.net
>>817
業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。
PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。
core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。
また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。
おまけにバッチとWSHはもう仕様変更が無いという強みがある。
等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。
862:デフォルトの名無しさん
20/06/09 07:37:38.68 xQo5RGeQ.net
長々と更新してもcmd変わらず放置
不具合あればPS使えということか
バッチに未来は無い
863:デフォルトの名無しさん
20/06/09 21:59:44.80 Phlj4K/L.net
cmdはもう更新しないってアナウンス出てなかったっけ?
864:デフォルトの名無しさん
20/06/09 22:16:29.17 aAgqnyde.net
バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし
現状維持でこのまま使えたらそれでいいよ
865:デフォルトの名無しさん
20/06/14 08:05:01.57 Nip9LUw0.net
教えてください。
引数以外でショートカットの情報をバッチに渡すことはできますか?
バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、
ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
866:デフォルトの名無しさん
20/06/14 10:09:40.34 Rvue1P4U.net
ショートカットって何の?起動したバッチファイルのもの?
ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも
どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな
867:デフォルトの名無しさん
20/06/14 10:41:39.28 Nip9LUw0.net
>>829
やっぱり無理そうですね。
ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、
%0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。
何か方法ないのかなと思い、、あきらめます。
ご回答ありがとうございます。
868:デフォルトの名無しさん
20/06/14 11:24:19.06 2FaHAA2B.net
ショートカットのプロパティで作業フォルダを弄ればいいだろ。
リンク先のバッチで%cd%参照。
ファイル名なんてリンク先に合わせりゃいいだろ。
869:デフォルトの名無しさん
20/06/14 11:26:00.19 Q6c7IGAp.net
>>830
もしショートカットファイルから元のファイル名を取得したいってことなら
wmicコマンドとか使えば良いんじゃない?
URLリンク(stac)
870:koverflow.com/a/29650022
871:デフォルトの名無しさん
20/06/14 11:45:22.44 2FaHAA2B.net
プロパティのリンク先に自分のフルパスを追加してもいい
リンク先のバッチで%1参照。
872:デフォルトの名無しさん
20/06/14 12:14:20.27 Nip9LUw0.net
>>831
仰る通り。
それがメンドーだな、と思っただけです。
プロパティ弄らずにファイル名変更だけで挙動変えようかと、、、
873:デフォルトの名無しさん
20/06/14 12:15:45.60 Nip9LUw0.net
>>832
そういうの、いろいろありますね。
VBSとかPSとか。
後者をSendToに入れてフォルダ内調査に使ったりしてます。
874:デフォルトの名無しさん
20/06/14 12:16:13.25 Rvue1P4U.net
ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの?
ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど
875:デフォルトの名無しさん
20/06/14 12:17:49.77 Nip9LUw0.net
>>833
プロパティ弄るなら、素直に引数指定すれば良さそうです。
みなさんご意見ありがとうございます。
876:デフォルトの名無しさん
20/06/14 12:18:03.34 2FaHAA2B.net
作業フォルダを空欄にするだけなんだけど
877:デフォルトの名無しさん
20/06/14 12:20:20.62 Nip9LUw0.net
>>836
ショートカットを別フォルダにコピーするだけで、そのショートカットの親フォルダをバッチに渡すということをしたかったです。
ただのめんどくさがりです。すみません。
878:デフォルトの名無しさん
20/06/14 12:25:13.85 Nip9LUw0.net
ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました。
ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。
みなさんおつきあい頂きありがとうございます。
879:デフォルトの名無しさん
20/06/14 12:32:21.09 Rvue1P4U.net
>>839
それなら >>838 で可能
作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる
880:デフォルトの名無しさん
20/06/14 12:47:38 zWNqxiy9.net
別フォルダにコピーする時点で親フォルダ分かってるんじゃない?
881:デフォルトの名無しさん
20/06/14 19:57:43.39 Nip9LUw0.net
>>841
おおお、なるほど!
StartInを指定しなければ、CurrentDirectoryは移動しないのか。
リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。
感謝!!
VBAのApplication.Callerみたいなのが書ければいいんですけどね。
882:デフォルトの名無しさん
20/06/14 20:09:16.72 2FaHAA2B.net
作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな。
あと、管理者権限で実行したらC:\WINDOWS\system32になったりする
883:デフォルトの名無しさん
20/06/14 20:15:00.02 Nip9LUw0.net
>>844
そうなりますね。気をつけます。
884:デフォルトの名無しさん
20/06/14 21:58:02.09 Nip9LUw0.net
すみません。もう1つ質問です。
バッチ自身を最小化して起動するときどうされてますか?
これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。
サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。
普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、
うまい方法があれば教えてください。
885:デフォルトの名無しさん
20/06/15 14:19:29.38 YYrFY+5A.net
無い
886:デフォルトの名無しさん
20/06/15 19:14:00.08 X3dRtIQ2.net
>>847
了解!
887:デフォルトの名無しさん
20/06/15 19:21:32.94 bzzr0fEY.net
start
888:デフォルトの名無しさん
20/06/15 21:31:09.57 xZsc1Mf0.net
pause
889:デフォルトの名無しさん
20/06/16 06:44:47 zfRgO9so.net
PowerShell なら、
# ショートカットファイルのフルパス
$fn = "フルパス"
# ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る
$link = $wsh.CreateShortcut( $fn )
# 画面に表示する
Write-Host "$( $fn )`
890:nTargetFile: $( $link.TargetPath )"
891:851
20/06/16 06:47:46 zfRgO9so.net
>>851
修正
一番上に、これを入れて
$wsh = New-Object -ComObject WScript.Shell
892:デフォルトの名無しさん
20/06/16 09:13:19.74 n71ojSL1.net
wsh呼び出すならvbsでも使えばいいわけで…
893:デフォルトの名無しさん
20/06/16 15:49:55.53 0FicG8jZ.net
リンク先バッチ本体をコピーしたらあかんの?
894:デフォルトの名無しさん
20/06/16 16:06:26.98 0FicG8jZ.net
動的に変化するのか?
895:デフォルトの名無しさん
20/06/16 22:29:49.48 woSalLPH.net
>>851
あれ、まだ続いてましたね。
えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。
結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、
.Lnkのファイル名を取得する手段はない、と認識しました。
もしかして、PowerShellなら取得できますか?
896:デフォルトの名無しさん
20/06/16 22:38:20.68 woSalLPH.net
>>854
Batchを複製すればできますね。
でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。
ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。
(現時点、これで代用してます)
でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。
で、バッチを最小化で生起動する方法は、、無い!という結論です。
というところで諦めています。
897:デフォルトの名無しさん
20/06/16 23:14:22.53 yH2E1+y3.net
おまえ要領を得ないって良く言われるだろ
何を最小化したいの?コンソール画面?バッチから起動したアプリ?
アプリ起動にバッチを介するようになって困っているようだけど
コンソールはすぐ消えるから大して困らんでしょ
その一瞬も困るってこと?
コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
アプリならstart /min
そのバッチを貼れない理由でもあるの?
898:デフォルトの名無しさん
20/06/16 23:24:30.52 C/0BZ8DU.net
そんなへんなことするようなものは俺なら要らんと言うな
説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う
899:デフォルトの名無しさん
20/06/16 23:48:59.36 zfRgO9so.net
漏れなんか、ダブルクリックで、Ruby スクリプトを実行するために、
test.vbs に、起動部分だけを書いてる
CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
900:デフォルトの名無しさん
20/06/17 02:23:38.88 1C8hVY+b.net
もうやめろ。くだらねえ
901:デフォルトの名無しさん
20/06/17 03:27:41.75 pABU+G65.net
だから結論はでた、諦めてると言ってるだろ。
返してくれた方がいたので返答しただけ。
ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。
はい、本件Close。
有用な情報提供いただいた皆さんありがとう。
902:デフォルトの名無しさん
20/06/17 07:10:17.14 jbUYdqRV.net
よくわからんけど start /b /min を使うのではだめなのかしら
と独り言
903:デフォルトの名無しさん
20/06/17 08:16:21.96 tu0J1xQb.net
>>863
/bスイッチって何でしたっけ?
904:デフォルトの名無しさん
20/06/18 03:29:25.23 00is865e.net
>>858
>その一瞬も困るってこと?
悪いことしたい時に、それでは困るよね?
905:デフォルトの名無しさん
20/06/18 07:09:08.15 EpKOfb9E.net
>>865
単なる気分の問題
本件はクローズ。皆さんありがとうね
906:デフォルトの名無しさん
20/06/18 15:00:22.59 L9lBZl+g.net
そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな
907:デフォルトの名無しさん
20/06/18 20:51:24.52 sqKtSFf3.net
ここまでの流れで誰も配布するなんて話してないのにお前
908:は何を言ってるんだ? 866の好きにさせとけよ
909:デフォルトの名無しさん
20/06/18 22:53:59.19 EpKOfb9E.net
>>868
はい、自分用です。ご安心を。
中身もつまらない小物ツールですので。
技術的な情報が知りたかっただけです。
また教えてください。
910:デフォルトの名無しさん
20/06/19 00:05:08.15 HgOFevSP.net
クローズしたそうだが
コンソール画面を見たくないのなら
レイアウトの位置を右下に詰めろ。
ほとんど見えなくなるぞ
911:デフォルトの名無しさん
20/06/19 00:27:18.52 TPV7TWbz.net
殆どじゃダメなんだよ
神経質な奴に見つけられてしまう
912:デフォルトの名無しさん
20/06/19 00:33:46 HgOFevSP.net
お前、質問者か?
913:デフォルトの名無しさん
20/06/19 03:17:24.40 7A38Sw4m.net
テキストファイルから空行を除く方法
findstr /R .
ただし空白やタブのある空行は失敗
914:デフォルトの名無しさん
20/06/19 05:11:07.46 HgOFevSP.net
>>873
タブやスペースだけの行をスキップするには
findstr /r /c:"[^ ]"
^と]の間にタブとスペース入力
バッチではエディタでタブ入力できるが
コマンドプロンプトでタブ入力するには cmd /f:off で
915:デフォルトの名無しさん
20/06/19 05:34:11.61 HgOFevSP.net
for~do~echoでやった方がいいかも
916:デフォルトの名無しさん
20/06/27 20:08:23.94 dZCme2QN.net
テキストファイルに入ってる文字列を
一行ごとに読み込んで
フォルダを作るバッチをつくったのですが
半角スペースの文字列が分割されてしまいます
これって対応策ありますか?
917:デフォルトの名無しさん
20/06/27 20:23:13.74 7ozUCHmg.net
>>876
for /f "tokens=*" %%i in (data.txt) do md "%%~i"
918:デフォルトの名無しさん
20/06/28 21:21:38 elMokmc1.net
>>877
できたサンクス
助かった
919:デフォルトの名無しさん
20/06/30 15:01:18.03 SwuJ9TNP.net
ファイル名全角英字の大文字小文字を同じとみなしていた
A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった
Aaは全角英字
芸が細かい、いいか悪いかは別として
920:デフォルトの名無しさん
20/06/30 19:03:57 PSeL/c0z.net
ワイルドカードの ? の仕様がイマイチ分からない
abc と abc1 のファイルがあったとして
>dir /b abc?
abc
abc1
>dir /b ?abc
ファイルが見つかりません
>dir /b a?bc
ファイルが見つかりません
なぜ見つからないのか
1ないし0個の文字じゃないのか
921:デフォルトの名無しさん
20/06/30 19:07:42 /pl8PJcc.net
ワイルドカードで?は任意の1文字を示す
922:デフォルトの名無しさん
20/06/30 19:14:29.14 PSeL/c0z.net
では abc? で abc が一致するのはなぜ
923:デフォルトの名無しさん
20/06/30 19:19:02.81 /pl8PJcc.net
abc.でマッチするからだと思う
924:デフォルトの名無しさん
20/06/30 19:21:41.87 PSeL/c0z.net
なるほど。ありがとう
925:デフォルトの名無しさん
20/06/30 19:28:18.05 PSeL/c0z.net
abc?? や abc??? でも一致するようだ
926:デフォルトの名無しさん
20/06/30 19:49:40.78 tIigavUn.net
URLリンク(www.pg-fl.jp)
URLリンク(kayuitoko.blog129.fc2.com)
927:デフォルトの名無しさん
20/06/30 19:59:31.31 PSeL/c0z.net
abc??.?? とかも一致するね。たぶん仕様というよりバグ
928:デフォルトの名無しさん
20/06/30 21:39:19 clO9Gt1K.net
ピリオドが絡むとワイルドカードはおかしな動きするよ。
filename_yyyy.mm.dd.dat
みたいなもんが
dir *_????.??.??.dat
で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。
filename_yyyy-mm-dd.dat
として
dir *_????-??-??.dat
だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。
929:デフォルトの名無しさん
20/07/01 07:22:43.96 sbIkpZ+y.net
ワイルドカードは色々とおかしい
>echo > "abc" & echo > "
930: abc" >for %i in ("abc*") do @echo "%i" "abc" " abc"
931:デフォルトの名無しさん
20/07/01 07:57:25.88 9hqgfVHi.net
そっちはたぶん8.3形式が引っかかってるんだろう
932:デフォルトの名無しさん
20/07/04 22:02:55.18 r0U5W+Xd.net
PC初心者です。
初めてバッチファイルの作成にチャレンジしています。
ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。
コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。
これはなぜでしょうか?回避方法はありますか?
933:デフォルトの名無しさん
20/07/04 22:37:12.45 KIcU78VY.net
>>891
ggrks
934:デフォルトの名無しさん
20/07/04 22:39:29.92 QUXtQ3do.net
たぶん、A ファイルがあって、それを上書きする時に、
安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、
正常に上書きした後に、Recovery内のA を削除している
ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう
935:891
20/07/05 11:17:14.37 eLIuBas1.net
>>893
ありがとうございます。
バックアップ自体は問題なさそうなので、このままで使ってみようと思います。
936:デフォルトの名無しさん
20/07/05 15:06:46.22 1amJ61U+.net
>>893
>>894
コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの。
ドライブを丸ごと robocopy すると強制的に SH 属性が付くから、最後に attrib -S -H してやる必要があるし、>>894 はそれをしてると思う。
そしたら「Recovery」が見えるようになった、というだけの話でしょ…これ。
コピー元のルートディレクトリに行って「dir /a」して確認してみ?
937:891
20/07/07 00:32:35.56 TndHy5rX.net
>>895
「dir /a」して確認してみたところ、仰る通りでした!「Recovery」フォルダは不要なので削除しました。
有難うございました!
938:デフォルトの名無しさん
20/07/08 04:28:57.30 lPT19RKJ.net
超初歩的な質問いいですか?
①URLリンク(i.imgur.com)
②URLリンク(i.imgur.com)
③URLリンク(i.imgur.com)
①のCというフォルダを中にある1.txt 2.txtごと②にコピーして③のようにしたい時、どう入力したらいいですか?
すでに③のような状態にある時もコピーして上書きしたいのですが
ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので
939:デフォルトの名無しさん
20/07/08 04:57:01.58 xPuqy2ih.net
>>897
せめて、何を試してうまく行かなかった、とか試行錯誤の具体的な
過程があれば説明、答えを教えてくれるひとがいるかも
940:デフォルトの名無しさん
20/07/08 05:13:48.40 H59ZusVp.net
>>897
普通にcopy使えよ
941:デフォルトの名無しさん
20/07/08 05:29:09.34 plYM8yLW.net
>>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
942:デフォルトの名無しさん
20/07/08 05:44:34.05 lPT19RKJ.net
>>900
どうもありがとうございました。
自分でも色々やって試しててうまくいかず質問したのですが、
原�
943:ェ保存した文字コードがUTF-8だったためでした。 ANSIに変えたらうまくいきました。
944:デフォルトの名無しさん
20/07/08 11:29:53 Z8A6jaoN.net
xcopy よりは、robocopy を使った方が良いのでは?
xcopyは、あまり見ない
945:デフォルトの名無しさん
20/07/08 12:24:18.71 lp5P2pBO.net
dosで使えなくなるだろ
946:デフォルトの名無しさん
20/07/08 12:46:00.57 Lb+zauke.net
たしかに、DOSは、Xcopyまでだったか。
pureDOSには、robocopyはないのだな。
947:デフォルトの名無しさん
20/07/08 12:56:46.06 plYM8yLW.net
robocopyは絶望的に遅い
複雑な条件がないのならxcopyがいい
948:デフォルトの名無しさん
20/07/08 15:01:55.81 z330e5aM.net
robocopyは、ミラーリングで使用したときに、
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。
949:デフォルトの名無しさん
20/07/08 18:21:45.08 ebRsk5Wi.net
ま?
950:895
20/07/08 19:29:53.78 fFkGRU4d.net
>>896
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
URLリンク(www.atmarkit.co.jp)
だから丸っきり不要ってわけでもないのだよ。
951:デフォルトの名無しさん
20/07/09 01:19:26.67 oG8bZA2s.net
URLリンク(itomo.cocolog-nifty.com)
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している
952:デフォルトの名無しさん
20/07/09 02:32:11.02 zMPqHoYq.net
>>909
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
953:デフォルトの名無しさん
20/07/09 04:53:54.78 gEWbrPAM.net
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
954:デフォルトの名無しさん
20/07/09 06:30:12.62 o2t2WZIU.net
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
955:デフォルトの名無しさん
20/07/09 06:31:35.37 o2t2WZIU.net
ああ LastAccessTimeじゃくてLastWriteTime
956:デフォルトの名無しさん
20/07/09 13:30:39 oG8bZA2s.net
>>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている
957:事が原因でした そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
958:デフォルトの名無しさん
20/07/09 16:17:08 t1UM8kjV.net
>>914
ファイル名に相当する箇所をクオート
959:デフォルトの名無しさん
20/07/15 06:27:24.24 pJbYwVEp.net
URLリンク(docs.microsoft.com)
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな~と予想してるんですがaは全く見当がつかないです
960:デフォルトの名無しさん
20/07/15 06:51:32 73kyB1S/.net
Arithmetic
961:デフォルトの名無しさん
20/07/15 15:46:16.46 nRIpdjFe.net
if 感染者数==0 (
goto campaign
) else (
goto campaign
)
962:デフォルトの名無しさん
20/07/15 21:08:21.69 NpGOzuTH.net
w
963:デフォルトの名無しさん
20/07/15 22:58:28.42 SqApoBlS.net
>>916
MSの英語フォーラムとか
英語版StackOverFlowとか
Redditとか
で尋ねたら?英語で。
本当に知りたいなら英語圏に聞け。英語圏に。
964:デフォルトの名無しさん
20/07/15 23:48:35.91 vc+VU4Sj.net
>>917 が教えてくれてるよ
965:デフォルトの名無しさん
20/07/15 23:53:31.66 SqApoBlS.net
>>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
966:デフォルトの名無しさん
20/07/16 00:26:22.36 3qBZIgLF.net
/a は 単純に answer かな
967:デフォルトの名無しさん
20/07/16 05:41:06.12 smyagw08.net
>>923
まじで?
いや普通にarithmeticでしょw
968:デフォルトの名無しさん
20/07/16 11:47:24.17 lU9BoPI+.net
以降あいうえお作文スレ
969:デフォルトの名無しさん
20/07/16 13:33:25.11 d6//+ANU.net
Arithmeticって+-*/のことじゃないの?
970:デフォルトの名無しさん
20/07/17 00:25:33.43 C6Q8EyYV.net
+とか-はarithmetic operatorだね
971:デフォルトの名無しさん
20/07/18 01:59:17.03 6qVTTMhl.net
大体は理想通りに出来たのですが時々不要な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
972:デフォルトの名無しさん
20/07/18 05:56:42.11 mgWYGhz7.net
if not "%~1"=="" START "" %1
973:デフォルトの名無しさん
20/07/18 08:09:21.26 ddPranTH.net
if exist "%~1" start "" "%~1"
974:デフォルトの名無しさん
20/07/18 08:50:03.50 ddPranTH.net
for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")
975:デフォルトの名無しさん
20/07/18 14:36:51.45 4sfyyT7O.net
>>929->>931
ありがとうございます
not exist definedの違いなど勉強して盛り込んでみます
976:デフォルトの名無しさん
20/07/18 15:31:48 GUFQRDdz.net
>>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
977:デフォルトの名無しさん
20/07/18 15:40:41.02 VVrReUQE.net
start /?
最初のは "タイトル"
978:デフォルトの名無しさん
20/07/18 19:10:23.40 mgWYGhz7.net
>>933
%1の引用符なしが%~1
だから"%~1"は二重がけではない
979:デフォルトの名無しさん
20/07/18 20:08:37.75 xxg3trOa.net
"" START ""
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね
980:デフォルトの名無しさん
20/07/19 00:01:19.79 nPf
981:Uu10f.net
982:デフォルトの名無しさん
20/07/19 00:15:51.03 nmSNkapE.net
>>936
完全にこれでしたすみません
983:デフォルトの名無しさん
20/07/31 20:28:20.67 uhGaPqk6.net
面白い書き方見付けた
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]
984:デフォルトの名無しさん
20/08/01 00:13:59.61 oGghCVi0.net
>>939
解説お願いします
985:デフォルトの名無しさん
20/08/01 01:53:16.42 mxUlZpQQ.net
他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
…
goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?
986:デフォルトの名無しさん
20/08/01 06:07:29.27 hnL660kY.net
他のとやらが標準出力読めるなら
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
987:デフォルトの名無しさん
20/08/01 10:06:48.10 KdkXblI6.net
>>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]を表示してるだけだな。
988:デフォルトの名無しさん
20/08/01 15:48:10.34 mxUlZpQQ.net
>>942
やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません…
やっぱ無理ですかね…
989:デフォルトの名無しさん
20/08/01 16:20:21.81 hnL660kY.net
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に書き出しじゃダメなん?
990:デフォルトの名無しさん
20/08/01 17:49:00.41 y/Re9bvj.net
>>944
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも
991:デフォルトの名無しさん
20/08/01 23:16:08 mxUlZpQQ.net
どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。
将棋所
URLリンク(shogidokoro.starfree.jp)
USIプロトコル
URLリンク(shogidokoro.starfree.jp)
USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…
>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどう�
992:キれば良いのか…
993:デフォルトの名無しさん
20/08/02 00:01:49.63 SCuZm8dn.net
>エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
994:デフォルトの名無しさん
20/08/02 00:12:10.36 SCuZm8dn.net
> setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし