[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 02:16 / Filesize : 294 KB / Number-of Response : 1050
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【.cmd】 バッチファイルスクリプト %13 【.bat】



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/

577 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:14:31.85 ID:9HGwW/1Y.net]
@echo off
echo %1
call :LABEL %1
exit /b

:LABEL
echo %*



> test.bat a
a
a

 これが普通

> test.bat ^^
call :LABEL exit /b
ECHO は <OFF> です。

 頭痛いけどなんとなく理解できる

> test.bat "^"
"^"
"^^"

 なんで^増えてんだよwww

578 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 21:24:41.89 ID:9HGwW/1Y.net]
@echo off

setlocal enabledelayedexpansion
echo %1
set A=%1
call :LABEL "%A%"
call :LABEL !A!
call :LABEL "!A!"
exit /b

:LABEL
echo %1

> test.bat "^"
"^"
""""
"^^"
""""

もう意味がわかんないw
これ人間が制御できるものなんか?

579 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 09:44:25.06 ID:fP398yW4.net]
setlocal enabledelayedexpansion は >>540対策で使えるけど、
それ以外はもっと制御が難しいかも・・・

基本は通常のsetlocalで比較のときだけ
部分的に使ったほうが良さそう

今回は頑張ったけど、もうやらない。

580 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 15:37:42.63 ID:noq81T2Q.net]
スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる

581 名前:デフォルトの名無しさん mailto:sage [2019/11/10(日) 20:23:39.65 ID:u8+xJCBj.net]
for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で
for %%i in (a b c) みたいにワイルドカードが含まれてない場合は
ファイルがあるなしに関係なく、a、b、cを繰り返す機能ってことであってますか?

582 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 15:51:47.87 ID:MT98n7t2.net]
多重フォルダの中身を
一番上のフォルダにまとめるスクリプトってどうやるの?

できればフォルダをドラッグ&ドロップしたいんだけど

583 名前:デフォルトの名無しさん mailto:sage [2019/11/14(木) 21:52:50.32 ID:ah6E9oLX.net]
>>561
for /r %1 %%i in (*) do move "%%i" \

584 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 20:56:52.03 ID:/+k2TWLn.net]
なんかこんなバッチファイルがあったけどうまく動かない
for /f "usebackq tokens=1" %%A in (`tasklist /fi "imagename eq SKRWATCH*" /fo "table" /nh`) do
if "SKRWATCH.EXE"=="%%A" (echo %%A & exit) else (START /D C:\Users\user1\Downloads\skrw021 SKRWATCH)

585 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:18:40.00 ID:45qFz0UJ.net]
>>563
うまく動かないでは状況が不明(エラーxxxが表示とか具体的に)
・tasklistは動くのか?(tasklist /?)
・そのままコピペしてるのなら動かなくて当然
 (doの前に全角空白があるし、doの後も改行されてる
  起動するパスがexeと空白で区切られてるがタイプミスか)
・対象はそのEXEで間違いないのか、パスに間違いはないか



586 名前:デフォルトの名無しさん mailto:sage [2019/11/18(月) 21:26:40.79 ID:45qFz0UJ.net]
>起動するパスがexeと空白で区切られてるがタイプミスか
これはフォルダ指定だから記述に問題はなかったね

587 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 00:58:21.49 ID:f1OS2g5Q.net]
>問題はなかったね
問題あるから動かねーんだろwwバカじゃね?
いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ

588 名前:デフォルトの名無しさん mailto:sage [2019/11/19(火) 03:01:51 ID:DFw2Dz+B.net]
pause & exit
コンソール入力で起動なら exit/b

589 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 12:24:50.17 ID:2S7bcPNj.net]
テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね?
↓なイメージです

key = value
[version]

590 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:04:27.56 ID:Tu0gcZfO.net]
batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う

591 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 13:53:46.39 ID:xBPN5HFi.net]
エディタでの置換じゃ無理な処理数なん?
batで文字列操作は事故の元
JSかP

592 名前:Sでも使えば? []
[ここ壊れてます]

593 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 17:43:27.76 ID:jZ8vbKIX.net]
>>569
>>570
やりたいことはローカルセキュリティーポリシーテンプレートを書き換えたいんですよ
seceditってコマンド使うんですけどその書き換えの部分を自動化したいんです
因みにPSでは使えないです

594 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:20:58.96 ID:Tu0gcZfO.net]
これでいけないかな
https://qiita.com/kurukurupapa@github/items/f4439fd5c33f6ebfec62

595 名前:デフォルトの名無しさん mailto:sage [2019/11/20(水) 19:53:19.75 ID:p2TBD6cq.net]
一行ずつぐるぐる回しながら表示して
[version]だったら、その表示の前に追加すればいいだけじゃん



596 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 09:08:09.78 ID:YDFq+t9K.net]
いいやPS使ってもらう

597 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 10:25:48.48 ID:Wg+WlOX1.net]
ファイルを一行ずつ読み込んで出力する処理に
ちょこっと手を加えるだけだから簡単だな

598 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:16:31.45 ID:LvODftpp.net]
簡単だったら早く教えろよな
キレちゃうぞこのやろう

599 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 11:47:37.77 ID:xinrmZtD.net]
PSで簡単にできたからもういいわ

600 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 12:46:53.45 ID:7xPdmDWo.net]
>>572
行頭が数字なのにeolの指示は無意味
delimsを数字にしないとまずいし
他人のバッチを鵜呑みにして理解していないバッチ

601 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 15:03:03.19 ID:8WRatKwZ.net]
EUCテキストだから、ファイル名をそのままfindstrに突っ込むのは無理だな

602 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:04:24.91 ID:7xPdmDWo.net]
>>579 これでどうかな?
@echo off
chcp 20932
set s="%~1"
set "a=key = value"
set "b=[version]"
call :x > "%~2"
goto :eof
:x
for /f "delims=" %%i in ('findstr /n "^" %s%') do (
set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!
if /i !d!==!b! echo.!a!
echo.!d!
endlocal)

603 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 16:15:57.27 ID:7xPdmDWo.net]
>>580 を実行前は chcp 932

604 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 20:46:01.60 ID:8WRatKwZ.net]
EUCじゃなくてUnicode(UTF16)だった

605 名前:デフォルトの名無しさん [2019/11/21(木) 22:34:33.13 ID:2C4HvUZs.net]
コード変換ソフトがないと、無理かな。



606 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:42:46.40 ID:8WRatKwZ.net]
いやfindstrにファイル名渡さないようにすればそれでいい
'type %s%^|findstr /n ^^'
cmd /u /c hoge.bat in.txt out.txt

607 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 22:47:11.20 ID:8WRatKwZ.net]
^^じゃダメだった
^^^^か"^"だね

608 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:14:31.55 ID:t93OqxgW.net]
>>568
Ruby で作った

text = <<"EOT"
[version]
a
[version]
EOT

re = /^\[version\]$/

text.gsub!( re ) { |matched| "key = value\n#{ matched }" } # 置換
puts text

出力
key = value
[version]
a
key = value
[version]

609 名前:デフォルトの名無しさん mailto:sage [2019/11/21(木) 23:21:01.84 ID:8WRatKwZ.net]
ただBOMが付かないね
BOMが無いと使えないかどうかは怖いので試してない

610 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:14:32.18 ID:UfmR8W/F.net]
>>587
@echo off & if "%~1"==":x" goto x
set "a=key = value" & set "b=[version]" & set s="%~1"
chcp 65000 > nul
cmd/u/c "set/p a=+/v8-<nul"> "%~2"
chcp 932 > nul
cmd/u/c "%~0" :x >> "%~2" & goto :eof
:x
for /f "delims=" %%i in ('type %s% ^| findstr/n/r .*') do (set c=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!& if /i !d!==!b! echo.!a!
echo.!d!
endlocal)

611 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 00:20:53.00 ID:UfmR8W/F.net]
>>588
あらかじめbom付き空テキスト用意しておけば
もっと簡単なバッチになるけどね

612 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:00:26 ID:iZoP+Nd2.net]
FINDSTR: // は無視されました。

/n /rとするか、/nだけにするか

613 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:02:44 ID:iZoP+Nd2.net]
/nrで良いか

614 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 02:47:17 ID:UfmR8W/F.net]
そうだ

615 名前:な。直ぐ消えるので気付かなかった
動作はするようだが
スペース入れた方が無難だね
[]
[ここ壊れてます]



616 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 08:47:38.56 ID:wKGQ5j7v.net]
rubyきちがいきてるね

617 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 09:49:43.81 ID:VuiommTl.net]
無視無視

618 名前:デフォルトの名無しさん mailto:sage [2019/11/22(金) 12:09:43.22 ID:f2CG40En.net]
point of no return

619 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:13:10.37 ID:x4sN5Hm0.net]
質問した人は登場しないね
ひょっとして>>577が最後?

620 名前:デフォルトの名無しさん mailto:sage [2019/11/23(土) 16:50:58.80 ID:xep2e/TT.net]
awkが手軽で楽そうだがユニコードできたっけ?

621 名前:デフォルトの名無しさん mailto:sage [2019/11/25(月) 13:59:48.96 ID:6F6igyhI.net]
WindowsならPSで良いだろ
文字コードもドトネトで扱える範囲で指定できるし

622 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:19:19 ID:NW9y+uW0.net]
用途:エクセルにある複数の画像URLを、指定したフォルダにDLさせたい
コマンドでやりたい理由:
ダウンロードソフトは一つのフォルダに全部DLするか、
一つのURLを開いてから一つづつDL先を指定するか、
URLをフォルダ構造に分解して保存するからDL後探すのが面倒で嫌
DownloadThemALLとか、DL雨とか、Tab Saveとか、Image Downloader…
全部ダメ;

bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
bitsadmin /transfer [name] [URL][DL path]
…こんな風に並べて書いたところ、リストの最後らへんの二つぐらいを除いて
PRIORITY:NORMAL FILES:1/1 BYTES:0/0 (0%)
Transfer complete.

でDL開始する前に次の行にいってしまうようです。しかも0バイトの指定したファイルを作ってしまいますw
MS見ると複数やるなら1行に続けろとあるので
bitsadmin /transfer [name] [URL] [DL path] [name2] [URL2][DL path2]
としたが状況変わらず。

どうしたらいいでしょうか。timeoutでは変わりませんでした。

623 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 10:20:48 ID:NW9y+uW0.net]
>並べて書いた
batファイルにしてからダブクリのため

624 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:23:55 ID:ImxGWCjG.net]
httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う
ダウンローダーはその辺勝手にやってくれてるんだよ
取り敢えずこれ真似してforでlist読んでやってみれば?
ttps://automationlabo.com/wat/?p=570

625 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 12:32:29.83 ID:NW9y+uW0.net]
>>601
ありがとう、そこのサイトみてやってるんだ
ちなみに今はHTTPS対応してるようで
ttps://maku77.github.io/windows/cmd/download.html
ttps://qiita.com/uratatsu/items/d77152ca121d0b779464
一件づつコピペだったらできるんだ

ダウンローダーについては気軽にスレで聞いてるけど、
画像ごとにフォルダを指定して一気に保存ができるものはないみたい
昔懐かしいirvineができる的な噂見てやってみたけど、フォルダ指定ができないorz



626 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 13:46:11 ID:ISv3uuWx.net]
しらんけど
前の行の処理が完了する前に次の物が始まるのがまずいなら
Call でいんじゃないの?

627 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:15:56.61 ID:ImxGWCjG.net]
call または start "" /wait コマンド

628 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:16:12.39 ID:JyI6kWkc.net]
特定に箇所にダウンロードして、ダウンロードが終わったら移動するんじゃダメなの?
なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう
頭硬いのかな

629 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:22:21.16 ID:Rh/VLF1h.net]
bitsadmin の代わりに cURL を試してみては

630 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:40:23.78 ID:jwtMC5+Q ]
[ここ壊れてます]

631 名前:.net mailto: >>599
ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど
[]
[ここ壊れてます]

632 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:41:21.48 ID:ISv3uuWx.net]
たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう
ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう

633 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:51:14 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:55:31 ID:JyI6kWkc.net]
>>609
>だってDLしたあとで探す手間いらないですよね?

なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん
ダウンロードディレクトリにあるんだから
脳みそ足りて無くない?

635 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 14:59:19 ID:NW9y+uW0.net]
>>607
!!
調べてみます!

まあそりゃねぇ
管理ナンバー URLっていう100個のリストにある画像集める必要があって
素直にそのURLをブラウザで開いてD&Dもしてましたよ…けど開いてる時間すら
面倒になってきまして…
ダウンローダーいろいろ探したけど、ブラウザのダウンロードフォルダ固定とか
ダウンロードする画像ごとにフォルダ指定しろダイアログとか、そーじゃねーよとw
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る。
で、GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ。
599の状態でビャーってなればよかったのだが。(もっといい方法あったらそっちがいいけど!)



636 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:05:17 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:25:21 ID:XdTMGSyO.net]
batで外部プログラムの実行完了まで待つ呼び出し方法は
start /wait
って上で誰かが言ってるだろ

638 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:33:34 ID:ISv3uuWx.net]
ツリー上に保存しなけりゃいいし
ダウンロードフォルダのルートで

639 名前:*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ []
[ここ壊れてます]

640 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:49:02.22 ID:NW9y+uW0.net]
ツリーに保存しないとダメだからそうしてるんだけど。
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで。
必ず4つ、必ず5つならDL時即時リネーム連番にしてもいいけど…3しかなかったり6あったりする
それを検索するにしても画像リストと照合しながら?工程増えすぎ。元の手順より面倒になってもw

waitはダメでした。
trancefar 〜
wait
trancefar ~
は使い方間違ってますか?
trancefar 〜複数URL
wait
もだめでした…

641 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:54:58.38 ID:SASMXjiT.net]
start "" /wait bitsadmin
でしょ

642 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 15:56:32 ID:ISv3uuWx.net]
いちいち一個ずつ保存先指定するより楽だよ
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい

643 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:10:59 ID:XdTMGSyO.net]
とにかくダウンロードが正常に終わるようにならないと先に進めないだろ
ダウンロード時にフォルダが決まるならそれで問題解決だし
外部ダウンローダを使うのなら、落としたファイルとurlとの対応が取れるのかが問題
それが可能(例えばファイル名が行番号になってるとか)なら
落とした後にファイルを対応するフォルダに移動すればいい
もちろんbat等の自動化で

644 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:20:26 ID:ImxGWCjG.net]
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B %~dp0\%%A\%%C
urlに&とか%は無いの?

645 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:26:58.84 ID:NW9y+uW0.net]
>>617
それ、ブラウザでURL開いて、保存先フォルダ開いてD&Dのほうが早いよ?
今時のブラウザ、コピペと同時に開くんだから。

>>618
それな;

>>616

そういう使い方になるのか!ありがとうございます!
でも空ファイルだったw
Dirとmdで生きてるのでもう脳みそ煮えてますわ…



646 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:34:10.52 ID:NW9y+uW0.net]
>>619
ある。%20とか?とか。
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
ttps://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
こんな感じ。
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・
えっ??まさか%%

647 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:50:52 ID:ISv3uuWx.net]
>>620
一個ずつドラッグドロップする気?

648 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:51:59 ID:ISv3uuWx.net]
>>618
ダウンローダーなら正常に終わるでしょ

649 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 16:57:32 ID:XdTMGSyO.net]
>>623
一般的なダウンローダなら、urlの末尾がファイル名になるが
名前の重複も多く起き、その場合、ダウンローダは自動的にリネームする
aaa.jpg, aaa(1).jpgのように
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない
これとリストにあるurlとの対応をとるのは大変だと思わん?

650 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:03:32 ID:JyI6kWkc.net]
>>624
結局一つずつダウンロードする必要があるだろ?
やっぱり何を探せなないのが全くわからんなぁ

651 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:04:08 ID:ISv3uuWx.net]
>>624
重複はツリー上で保存すりゃ起きない

652 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:07:32 ID:NW9y+uW0.net]
>>622
その方が早いと言ってます。どっちが早いか試してみたら?
https://www.yahoo.co.jp/ ロゴとその左右のアイコン
https://www.rakuten.co.jp/ ロゴから購入履歴までのアイコン
https://www.nikkei.com/ ロゴと、その下の写真3つ
DL先のフォルダ開く、URLひらく、D&D 3工程
URLをまとめてダウンローダーに入れる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、該当のファイルを検索する D&D 5工程
フォルダごとにURLをダウンローダーにいれる、ダウンロードフォルダにまとまって入ってるから開く、移動先のフォルダを開く、D&D 4工程

653 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:10:41 ID:ImxGWCjG.net]
>>621
詰み
&なら "%%~B" とすれば行けたかもだけど
バッチで%〜%のエスケープは出来なくないもののかなり面倒くさい
powershellとか行

654 名前:チた方がいい
どうせ自動化するのなら>>612の元listから抽出してDLする方法をPSスレとかで相談してみれば?
[]
[ここ壊れてます]

655 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:15:21 ID:NW9y+uW0.net]
で、私はその3工程ですらめんどくっせーってなって、3工程とも省けんかなと考えた
#今後も同じ作業あるから、今なんとかできてると今後が楽。

ダウンローダーのダウンロード先の問題って、こうなるんだよね
tp://imepic.jp/20191126/620210
ふ、ふかい。(これはFirefoxアドオンのスクラップブック。DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど、画像を取り出すとなると
エクスプローラーに行く必要がある



656 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:15:53 ID:ISv3uuWx.net]
>>627
エクセルに入れてるってんだから
まとめてURL処理してるんでしょ
D&Dをファイル数分しなくちゃならんのを言ってるんだが
まとめてURL処理してるならD&Dは1回でいい

657 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:18:49.77 ID:NW9y+uW0.net]
>>628
うへwわろすwそういうことか!
Powershellはこっち以上に全くわからんな…
画像リストはGoogleスプレッドにぶんなげて作れてはいる
ありがとう

658 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:19:23.77 ID:ImxGWCjG.net]
0バイトになるのは書き込み権限とか
管理者で実行しても変わらない?

659 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:23:52.25 ID:NW9y+uW0.net]
>>632
transfarされる前に次にいっちゃって、でもファイル作れって言ってるから空のファイルつくりましたって感じに見える
transfar実行画面のBYTE:0/0のところが、いっこづつやったときはにゅーーーって動いてファイル捕れるんですが
ここが0/0のままで次を始めてしまう
Wait入れようが、Pauseいれようが、そこは同じですね

660 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:42:23 ID:NW9y+uW0.net]
>>631
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので、どこかの時点で%
を置き換えてやることにします。
ヒントありがとうございました。
みなさまもたくさんヒントありがとうございました。

661 名前:デフォルトの名無しさん mailto:sage [2019/11/26(火) 17:50:12 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/07(土) 09:30:10 ID:/m01ABgd.net]
>>634
おい逃げるなよ

663 名前:デフォルトの名無しさん mailto:sage [2019/12/08(日) 23:47:18 ID:wNkvi2te.net]
>>636
こわいよw
もはや逃げることはできぬぞ、か。

664 名前:デフォルトの名無しさん mailto:sage [2019/12/09(月) 14:56:56 ID:0+3TB6cR.net]
トレンドに#業務ハックというのが上がってた。フーン
ここにいるわるいオジサン達は徹底的に省力化して、あとは仕事するフリして過ごすようなことは
まさかしていませんよね?

665 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 05:01:38.65 ID:CfjKoCjD.net]
無理そうな気はしつつも質問

苗字<tab>名前<tab>年齢<tab>住所
田中<tab>太郎<tab>27<tab>大阪
山田<tab>花子<tab><tab>東京
佐藤<tab><tab>35<tab>

こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど
tokens=2,4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね
これはもうvbsやVBAじゃないと無理ぽかな



666 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 07:15:07 ID:BTxKZMwl.net]
>>639
delimsに指定してもダメなの?

667 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 07:44:27 ID:CfjKoCjD.net]
半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー

668 名前:デフォルトの名無しさん mailto:sage [2019/12/10(火) 09:16:41.59 ID:3V5uc2tI ]
[ここ壊れてます]

669 名前:.net mailto: >>639
tabの間にスペースを入れてみた。
これは前処理なので、あとはお好きにどうぞ

@echo off
set "t=<tab>"
call :x > test2.txt
pause & goto :eof
:x
for /f "delims=" %%i in (test1.txt) do ( set a=%%i
setlocal enabledelayedexpansion
set a=!a:%t%%t%=%t% %t%!
set a=!a:%t%%t%=%t% %t%!
echo.!a!
endlocal)

<tab>にはタブを入力
[]
[ここ壊れてます]

670 名前:デフォルトの名無しさん mailto:sage [2019/12/11(水) 01:05:38 ID:hz4JPg2Q.net]
おお、値の無い列には半角スペースを入れてしまうわけか
こりゃ気付かんかったサンクス

671 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 01:06:30.14 ID:7bx1tfw6.net]
バッチでフォルダの表示方法とかかえられないよ?
詳細にして 表示の種類に長さとか大きさとか
いれたいんだけど
それをワンクリックでやりたい

https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg

名前とか日付のとこに 長さとか大きさを追加するってことね

672 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 01:06:50.17 ID:7bx1tfw6.net]
かえられないよの?

673 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 04:06:09.26 ID:t9dRWycX.net]
>>645
レジストリ値弄れば出来たと思う。
昔職場の環境統一するのに使ってた。
詳細はRegshotとかで差分とって。
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか。

674 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 04:07:58.73 ID:t9dRWycX.net]
>>645
設定後にShellの再起動も必要だったかも。

675 名前:デフォルトの名無しさん mailto:sage [2019/12/13(金) 06:18:44.99 ID:SOm460Ps.net]
>>646-647
レジストリか
なるほど
ちょっと色々調べてみます



676 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 16:55:31 ID:l8jrOhSU.net]
こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
まあ実用上の問題は無いんですが

@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause

677 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:08:49.51 ID:TZP99wd2.net]
ピリオドとかコロンじゃなくて、カンマとかセミコロン使えばいいよ

678 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:16:19.46 ID:TZP99wd2.net]
イコールもお仲間で、この3つが特別区切り記号らしいよ

679 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 17:18:33.06 ID:l8jrOhSU.net]
>>650
はい、カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました

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
これも知らなかった

781 名前:デフォルトの名無しさん [2020/04/23(木) 15:25:29.03 ID:153+oMoq.net]
>>743コピペでももちろんいいですが、知っておきたかったです

782 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 16:03:20.39 ID:eZrYYRVL.net]
なんでバッチ嫌なの?

783 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 17:31:56.25 ID:P2MaiEJS.net]
>>748
だったらこんなところで聞くんじゃなくて
一次資料に当たる努力をしなよ

784 名前:デフォルトの名無しさん mailto:sage [2020/04/23(木) 21:20:47 ID:M8I+Acr1.net]
>>745
それ駄目。
遅延変数展開しないと痛い目に遭うよ。

785 名前:デフォルトの名無しさん [2020/04/26(日) 18:05:24 ID:FVxXRtXH.net]
連番をつけるコードでまだ躓いています
hoge.txt
hogehoge.txt

hoge(1).txt
hogehoge(2).txt
としたいです
echo off & for %i in (*.txt) do (ren %i ???)
このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが、%i自体にはファイル名が入っていると思います。インデックスは取れるんでしょうか?



786 名前:デフォルトの名無しさん [2020/04/26(日) 18:36:58 ID:FVxXRtXH.net]
バッチでset /aなどのオプションがありますが、/aは計算を伴う場合に使うそうです。
この/aに意味はあるのですか?
何らかの単語の略だと覚えやすいんですが。

787 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 18:40:50 ID:Pfsg7A5O.net]
その程度ぐぐれば出てくるでしょ
インデックスのカウント用変数が必要+変数の遅延展開
丸括弧のエスケープが必要
aはarithmeticの略

788 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 20:15:42 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:00:20.95 ID:zKIVBOto.net]
1Point ノウハウ
dir ですべてのファイル、フォルダを表示したい場合は
dir /A

790 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:18:32 ID:DxwpR+0O.net]
普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの?
何か理由あるん?

791 名前:デフォルトの名無しさん mailto:sage [2020/04/26(日) 22:22:15 ID:YV1WqKFq.net]
>>757
ファイル名に「%」入ってるとマズくない?

792 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:49:29 ID:ceHl0duT.net]
シェルスクリプトってお手軽省略表記にこだわりすぎるあまり
エスケープ処理が複雑化しバグりやすくなって本末転倒だよな

793 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 05:57:02 ID:l2PF55i3.net]
そんなところで躓く能なしは、他の言語で書いても同じだよ

794 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 13:01:40 ID:DKHJb1hS.net]
他の言語でもエスケープは必要なことはあるし同じこと
ただbatのように自身を置換して逐次実行するするようなことは
eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ

795 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 16:44:00 ID:3RXW9/E3.net]
要するに分かりにくい
ここで初心者にイロハから質問されてもレスがしにくい
リネームソフトでも使え



796 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 17:37:46 ID:7TaGv6sC.net]
>>759
シェルスクリプトでエスケープ処理が複雑なんて
したことがないんだがどういうケース?

むしろバッチファイルのほうがややこしすぎる
バッチファイルでダブルクォートはいつつけるか言える?
スペースが含まれたファイル名とか

バッチファイルでこれの出力結果は
echo "C:\Program Files"

↓これです。(ダブルクォート含む)
"C:\Program Files"

797 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:05:03 ID:3RXW9/E3.net]
どういうケースって、すぐ上の奴だろ

798 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:18:07 ID:7TaGv6sC.net]
>>764
もしかしてバッチファイルとシェルスクリプトの違いわかってないの?

799 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:19:14 ID:7TaGv6sC.net]
シェルスクリプトっていうのはUnixやLinuxの
/bin/shとかbashのことなんだが

800 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 18:20:52 ID:RB8xSOb3.net]
ファイル数

801 名前:からんけどリネームソフト使えば一分かからんで終了 []
[ここ壊れてます]

802 名前:デフォルトの名無しさん [2020/04/28(火) 20:35:28 ID:C/yTg51l.net]
>>766
俺の定義ではバッチファイルはシェルスクリプトだ

config.sysに
shell=command.com /e:1024
とか書いてたからな

803 名前:デフォルトの名無しさん [2020/04/28(火) 20:39:22 ID:C/yTg51l.net]
ちなみにMS-DOSにはエスケープ文字なんて無い

804 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:40:45 ID:f4hk4dsD.net]
>>768
意味わかんないから調べたが、
今では全く通用しない話じゃねーかよ。

てめーの定義を押し付けんな。

805 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 20:51:25.37 ID:l2PF55i3.net]
>>770
頑張ってググってきたんだからほめてやれよ



806 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 22:38:03.31 ID:0mXw36Cx.net]
>>769
Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね。

807 名前:デフォルトの名無しさん mailto:sage [2020/04/28(火) 23:55:09.09 ID:3RXW9/E3.net]
cmdはシェルだ。定義も糞もない

808 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 00:05:03 ID:kLiglYQz.net]
>>768
cmdじゃないじゃん

809 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:34:57 ID:bLWOmnfL.net]
UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ
shやbash=cmd
シェルスクリプト=バッチファイル
シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前

810 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 06:56:52.10 ID:SXZJio07.net]
とはいえ逆にunixでバッチがどうとか言うと違和感あるしな
>>766みたいな感覚が一般的

811 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:15:11 ID:sus1L+2H.net]
>>775
> シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前

シェアならLinuxのシェルスクリプトの方が多いよ
今はsystemdに置き換えられつつあるが、起動処理の多くで
シェルスクリプトが使われていた。
各アプリのビルドなどでもシェルスクリプトは使われている。

それに対してバッチファイルは殆ど使われていない。
そもそもWindowsのコマンドは、他のコマンドの出力を読み取って
別のコマンドで処理するように設計されていない
単に呼び出すだけ。だからバッチファイルという名前になってる

例えばcopyコマンドであってもシェルスクリプトであれば、コピーが正常に終了した場合
なにも表示されないのでスクリプトとして使いやすいが
Windowsのcopyは人間用のメッセージがいちいち出る
コマンドの出力を変数に入れるだけでも大変
遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる

そもそもの設計思想がスクリプトを組むためではなく、単にコマンドを並べるという使い方を
するためだからバッチファイルはシェルスクリプトだけでなく
PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている

一方、PowerShellスクリプトやVBScriptはコマンドをよびだすのが
面倒になってるので両立してるシェルスクリプトにはかなわない

812 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:22:12 ID:VzuV0Enx.net]
アスペがうだうだ言ってるだけで全く「会話」が進行していないな

813 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:36:25.95 ID:SXZJio07.net]
スレチだから、もうやめろ

814 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 07:51:09.96 ID:sus1L+2H.net]
やなコッタ

815 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:15:38.24 ID:f6LPbIhG.net]
パンナコッタ



816 名前:デフォルトの名無しさん mailto:sage [2020/04/29(水) 22:43:10 ID:sus1L+2H.net]
メロンパンナ

817 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 00:25:02 ID:6g7fIyNp.net]
マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢

818 名前:デフォルトの名無しさん mailto:sage [2020/04/30(木) 23:56:54 ID:4NDFLh29.net]
アッサムティー好き、いいよね

819 名前:デフォルトの名無しさん mailto:sage [2020/05/01(金) 20:45:42 ID:I+dUmCMk.net]
カタコッタ

820 名前:デフォルトの名無しさん [2020/05/07(木) 18:46:37 ID:jiFNKMfo.net]
滅茶苦茶初歩的な質問ですまん

バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?

821 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 18:51:16 ID:cw3NlGJG.net]
FOR /F ["オプション"] %変数 IN

822 名前:('コマンド') DO コマンド [コマンド パラメーター]
または usebackq オプションの場合:
FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]
[]
[ここ壊れてます]

823 名前:デフォルトの名無しさん [2020/05/07(木) 18:51:30 ID:jiFNKMfo.net]
もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい

824 名前:デフォルトの名無しさん [2020/05/07(木) 19:01:03 ID:jiFNKMfo.net]
>>787 ありがとう、いけたわ

logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど、これは他の問題かもしれんな

825 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:33:24 ID:lct9jPsZ.net]
昔だったら tail -f



826 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 19:34:28 ID:2gF3mugX.net]
>>789
標準出力じゃなくて、標準エラー出力の方にprintしてるんだろ
('py foo.py 2^>^&1')

827 名前:デフォルトの名無しさん [2020/05/07(木) 19:47:29.96 ID:jiFNKMfo.net]
logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた
出力取得できたのでまあよし

828 名前:デフォルトの名無しさん mailto:sage [2020/05/07(木) 20:17:47 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 09:27:08.95 ID:hWMQZbFi.net]
>コマンドプロンプト入門 Kindle版

2020年にこれを出すとはチャレンジャーすぎるな

830 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 16:03:14 ID:PeLhefIP.net]
amazonで、確認すると、2019/09の出版みたいですね。
どうせなら、power shellの本出したほうが良かったかも。

831 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 18:45:23 ID:NJ7uTfC9.net]
ファイル名に「b」を含むファイルをコピーするときに
たとえば
abc.txt というファイルがあって

copy *b*.txt def.txt
がオッケーで
copy *b* def.txt
がエラーなのはなぜですか?

*は0文字以上の文字列なので
両方とも成功すると思っていたのですが

832 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:05:09 ID:fhydWmjd.net]
>>795
KindleストアにPowerShellのがいっぱいあるやん

833 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:55:35 ID:UaCqmgBQ.net]
>>796
普通にできるけどどんなエラーが出るの?

ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな

834 名前:デフォルトの名無しさん mailto:sage [2020/05/12(火) 19:59:26 ID:fhydWmjd.net]
*b* が一つでもゴミが付くしね(0x1A)

835 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 20:41:18.51 ID:H5g1ckea.net]
Windows Terminal で音を鳴らすにはどうすればいいですか

コマンドプロンプトではControl-Gを出力してたんですが
Windows Terminalでは無視してくれやがります



836 名前:デフォルトの名無しさん [2020/05/23(土) 22:23:07.24 ID:105ldQbQ.net]
start beep.wav

837 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 22:45:59.81 ID:H5g1ckea.net]
そんなんだったら

>copy con beep.cmd
echo ^G
waitfor /T 3 waiting
^Z
1 個のファイルをコピーしました。

>start /min cmd /d/c beep.cmd

とするけどもっといい手はないかなと

838 名前:デフォルトの名無しさん mailto:sage [2020/05/23(土) 23:00:15 ID:H5g1ckea.net]
ああstartで自分を呼んで鳴らせばいいんだ
自己解決しました

839 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:25:04.68 ID:VYuvM9gt.net]
>>802
echo ^G>beep.dat
としておいて
type beep.dat

beep.dat は 0x07 (1byte)だけ

840 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:40:12.55 ID:f4O9jhZ+.net]
その手がWindows Terminalでは使えないって話

https://aka.ms/terminal-documentation
Windows ターミナルの概要 | Microsoft Docs

841 名前:デフォルトの名無しさん mailto:sage [2020/05/24(日) 00:46:46 ID:VYuvM9gt.net]
>>805
そうでしたか

Windows Terminal、使うか

842 名前:デフォルトの名無しさん [2020/06/03(水) 20:30:01 ID:H ]
[ここ壊れてます]

843 名前:abAm56l.net mailto: バッチでやるような処理でも
勉強兼ねてpowershell使って処理するようにしたほうがいいですか?
[]
[ここ壊れてます]

844 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:31:25 ID:5eIQQTQm.net]
勉強でなら、そりゃそうだろと言うしかないね

845 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 20:32:34 ID:HabAm56l.net]
実務上はどうです?
バッチの方が情報多いからいいんですか?



846 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:04:50.01 ID:mm84GRB0.net]
>>809
どういう現場か知らないけど
Widn7 SP1 PSv2 縛り
なんて現場でPS書きたいとか思わないね。

使わせてくれる現場なら使うべきだし、そうでないならバッチをシコシコ書くしかないのよ。

847 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 21:27:53 ID:QZ+HyrOs.net]
シコシコかくのよ

848 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:11:19 ID:JNM2fzED.net]
PSでできること=C#でできることだからバッチとは全然できることが違うよ
PSv2でも十分バッチとは天地の差がある

849 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 22:22:36 ID:5eIQQTQm.net]
元の質問が、「バッチでやるような処理でも」なんだけどな
ちゃんと読んでるか?

850 名前:デフォルトの名無しさん mailto:sage [2020/06/03(水) 23:24:38 ID:Gm6SBE/O.net]
>>809
情報量ならPowerShellの方が上だし
TechnetフォーラムならPowerShellのカテゴリーあるし
ポケットリファレンスの著者である牟田口大介まで出没している

ストアアプリのインストールとかはPowerShell必須だし
バッチのみじゃ書けない物も割と多い

処理の内容は忘れたけどバッチでやれた事を
PowerShellで書いたらキー入力を要求されて
かえってバッチの方が良かった場合もあるけど
そんなパターンは圧倒的に少ないと思う

でもウチの場合、PowerShell使いがいないから
というのが最大の理由で実務はバッチだらけ

良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき

個人の感想ならばPowerShellって
バージョンが上がって非互換が出そうなので避けたい

851 名前:デフォルトの名無しさん [2020/06/04(木) 09:41:35.56 ID:Di3Z81qX.net]
9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ
意識していれば、バッチファイルの利用は難しくないと思う。
VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく、WSHバージョン5.1以降かどうかさえ
気をつけていれば概ね大丈夫だと思う。

それらに比べてPowerShellは、個人的にはハードルが極めて高い。

852 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:05:12.56 ID:iofqxoab.net]
>>813
当然「バッチでやるような処理でも」PSなら十二分にこなせるよ
このスレで話題になるような変なクセや制限もないしね

853 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:12:12.70 ID:iofqxoab.net]
>>814
PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ

854 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 15:16:33 ID:efimIni8.net]
BATの典型的なものとしては
シーケンシャルに
・外部アプリ呼び出し
・ファイルコピーや移動
・メッセージ表示
であって、こんなものをPowerShellで書く必要は無いし、ステップ数も余分にいる

855 名前:デフォルトの名無しさん mailto:sage [2020/06/04(木) 21:18:27 ID:U7KCPoET.net]
PSの話したいなら該当スレへ
ここでするのはスレチ



856 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 09:26:58 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 10:14:13 ID:YNSaAEsR.net]
自己解決
どうやらこんな感じで動きそう

for %%f in (tech prog win newsplus) do (
 call :APPEND %%f
)

:APPEND
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
goto :EOF

859 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:33:35 ID:xkF+o6Lc.net]
>>820
setlocal enabledelayedexpansion
for %%f in (tech prog win newsplus) do (
 set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
)

じゃダメなの?

860 名前:デフォルトの名無しさん mailto:sage [2020/06/05(金) 11:53:35.34 ID:YNSaAEsR.net]
あれ?出来ますね

実は!で囲むのもやってみた(つもりだった)んだけど
(たぶん、どっか別のちょっとしたところでミスしてて)
その時はうまく動かなかったんですね

失礼しました

861 名前:810 mailto:sage [2020/06/06(土) 00:36:10 ID:ZNTMwsEj.net]
>>817
業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム、あるよ。改修したくもないけど。
PS は ver.3 で破壊的変更がなされたから、ver.2 に合わせて勉強するだけ無駄だと言われている。
core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階。

また、PS が「管理の自動化」を目指しているのに対して、バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う。
おまけにバッチとWSHはもう仕様変更が無いという強みがある。

等価なものを個人的に PS でリライトしてみる、はいいと思うけど、本番環境に入れるのはNGかな…。

862 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 07:37:38.68 ID:xQo5RGeQ.net]
長々と更新してもcmd変わらず放置
不具合あればPS使えということか
バッチに未来は無い

863 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 21:59:44.80 ID:Phlj4K/L.net]
cmdはもう更新しないってアナウンス出てなかったっけ?

864 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 22:16:29.17 ID:aAgqnyde.net]
バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし
現状維持でこのまま使えたらそれでいいよ

865 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 08:05:01.57 ID:Nip9LUw0.net]
教えてください。
引数以外でショートカットの情報をバッチに渡すことはできますか?
バッチ自体のファイル名、パス名を取得する方法はよく見かけますが、、
ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?



866 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:09:40.34 ID:Rvue1P4U.net]
ショートカットって何の?起動したバッチファイルのもの?
ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも
どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな

867 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 10:41:39.28 ID:Nip9LUw0.net]
>>829
やっぱり無理そうですね。
ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが、、、
%0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした。
何か方法ないのかなと思い、、あきらめます。
ご回答ありがとうございます。

868 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:24:19.06 ID:2FaHAA2B.net]
ショートカットのプロパティで作業フォルダを弄ればいいだろ。
リンク先のバッチで%cd%参照。
ファイル名なんてリンク先に合わせりゃいいだろ。

869 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:26:00.19 ID:Q6c7IGAp.net]
>>830
もしショートカットファイルから元のファイル名を取得したいってことなら
wmicコマンドとか使えば良いんじゃない?
https://stac

870 名前:koverflow.com/a/29650022 []
[ここ壊れてます]

871 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 11:45:22.44 ID:2FaHAA2B.net]
プロパティのリンク先に自分のフルパスを追加してもいい
リンク先のバッチで%1参照。

872 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:14:20.27 ID:Nip9LUw0.net]
>>831
仰る通り。
それがメンドーだな、と思っただけです。
プロパティ弄らずにファイル名変更だけで挙動変えようかと、、、

873 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:15:45.60 ID:Nip9LUw0.net]
>>832
そういうの、いろいろありますね。
VBSとかPSとか。
後者をSendToに入れてフォルダ内調査に使ったりしてます。

874 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:16:13.25 ID:Rvue1P4U.net]
ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの?
ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど

875 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:17:49.77 ID:Nip9LUw0.net]
>>833
プロパティ弄るなら、素直に引数指定すれば良さそうです。

みなさんご意見ありがとうございます。



876 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:18:03.34 ID:2FaHAA2B.net]
作業フォルダを空欄にするだけなんだけど

877 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:20:20.62 ID:Nip9LUw0.net]
>>836
ショートカットを別フォルダにコピーするだけで、そのショートカットの親フォルダをバッチに渡すということをしたかったです。
ただのめんどくさがりです。すみません。

878 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:25:13.85 ID:Nip9LUw0.net]
ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました。
ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした。
みなさんおつきあい頂きありがとうございます。

879 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:32:21.09 ID:Rvue1P4U.net]
>>839
それなら >>838 で可能
作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる

880 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 12:47:38 ID:zWNqxiy9.net]
別フォルダにコピーする時点で親フォルダ分かってるんじゃない?

881 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 19:57:43.39 ID:Nip9LUw0.net]
>>841
おおお、なるほど!
StartInを指定しなければ、CurrentDirectoryは移動しないのか。
リンクファイル名の方は無理そうですが、親フォルダはこれでいけそうです。
感謝!!

VBAのApplication.Callerみたいなのが書ければいいんですけどね。

882 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:09:16.72 ID:2FaHAA2B.net]
作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな。
あと、管理者権限で実行したらC:\WINDOWS\system32になったりする

883 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 20:15:00.02 ID:Nip9LUw0.net]
>>844
そうなりますね。気をつけます。

884 名前:デフォルトの名無しさん mailto:sage [2020/06/14(日) 21:58:02.09 ID:Nip9LUw0.net]
すみません。もう1つ質問です。
バッチ自身を最小化して起動するときどうされてますか?
これが理由の1つでショートカット起動していたのですが、代わりにバッチを使うとコンソールが表示されてしまいます。
サイトでよく見かける、@If not "%~0"... というやつは、Win7のためか機能しません。
普段は固定的に行う場合は、ショートカットやVBSをはさみ最小化実行しているのですが、、
うまい方法があれば教えてください。

885 名前:デフォルトの名無しさん [2020/06/15(月) 14:19:29.38 ID:YYrFY+5A.net]
無い



886 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:14:00.08 ID:X3dRtIQ2.net]
>>847
了解!

887 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:21:32.94 ID:bzzr0fEY.net]
start

888 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 21:31:09.57 ID:xZsc1Mf0.net]
pause

889 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 06:44:47 ID:zfRgO9so.net]
PowerShell なら、

# ショートカットファイルのフルパス
$fn = "フルパス"

# ショートカットファイル(.lnk)から、リンク先パス(TargetPath)を読み取る
$link = $wsh.CreateShortcut( $fn )

# 画面に表示する
Write-Host "$( $fn )`

890 名前:nTargetFile: $( $link.TargetPath )" []
[ここ壊れてます]

891 名前:851 mailto:sage [2020/06/16(火) 06:47:46 ID:zfRgO9so.net]
>>851
修正

一番上に、これを入れて

$wsh = New-Object -ComObject WScript.Shell

892 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 09:13:19.74 ID:n71ojSL1.net]
wsh呼び出すならvbsでも使えばいいわけで…

893 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 15:49:55.53 ID:0FicG8jZ.net]
リンク先バッチ本体をコピーしたらあかんの?

894 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 16:06:26.98 ID:0FicG8jZ.net]
動的に変化するのか?

895 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:29:49.48 ID:woSalLPH.net]
>>851
あれ、まだ続いてましたね。
えーと、リンクファイルの情報を取得するのではなくて、リンク先からリンク元を取得できないか、という相談でした。
結論としては、.LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが、
.Lnkのファイル名を取得する手段はない、と認識しました。
もしかして、PowerShellなら取得できますか?



896 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:38:20.68 ID:woSalLPH.net]
>>854
Batchを複製すればできますね。
でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい。
ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる。
(現時点、これで代用してます)
でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった。
で、バッチを最小化で生起動する方法は、、無い!という結論です。
というところで諦めています。

897 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:14:22.53 ID:yH2E1+y3.net]
おまえ要領を得ないって良く言われるだろ
何を最小化したいの?コンソール画面?バッチから起動したアプリ?
アプリ起動にバッチを介するようになって困っているようだけど
コンソールはすぐ消えるから大して困らんでしょ
その一瞬も困るってこと?
コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
アプリならstart /min
そのバッチを貼れない理由でもあるの?

898 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:24:30.52 ID:C/0BZ8DU.net]
そんなへんなことするようなものは俺なら要らんと言うな
説明書に手順を書くなり、起動用のps1やvbsでも同梱しとけばいいと思う

899 名前:デフォルトの名無しさん [2020/06/16(火) 23:48:59.36 ID:zfRgO9so.net]
漏れなんか、ダブルクリックで、Ruby スクリプトを実行するために、
test.vbs に、起動部分だけを書いてる

CreateObject("WScript.Shell").Run "ruby .\script.rb", 0

900 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 02:23:38.88 ID:1C8hVY+b.net]
もうやめろ。くだらねえ

901 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 03:27:41.75 ID:pABU+G65.net]
だから結論はでた、諦めてると言ってるだろ。
返してくれた方がいたので返答しただけ。
ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ。
はい、本件Close。
有用な情報提供いただいた皆さんありがとう。

902 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 07:10:17.14 ID:jbUYdqRV.net]
よくわからんけど start /b /min を使うのではだめなのかしら
と独り言

903 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 08:16:21.96 ID:tu0J1xQb.net]
>>863
/bスイッチって何でしたっけ?

904 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 03:29:25.23 ID:00is865e.net]
>>858
>その一瞬も困るってこと?

悪いことしたい時に、それでは困るよね?

905 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:09:08.15 ID:EpKOfb9E.net]
>>865
単なる気分の問題
本件はクローズ。皆さんありがとうね



906 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 15:00:22.59 ID:L9lBZl+g.net]
そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな

907 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 20:51:24.52 ID:sqKtSFf3.net]
ここまでの流れで誰も配布するなんて話してないのにお前

908 名前:は何を言ってるんだ?
866の好きにさせとけよ
[]
[ここ壊れてます]

909 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 22:53:59.19 ID:EpKOfb9E.net]
>>868
はい、自分用です。ご安心を。
中身もつまらない小物ツールですので。
技術的な情報が知りたかっただけです。
また教えてください。

910 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:05:08.15 ID:HgOFevSP.net]
クローズしたそうだが
コンソール画面を見たくないのなら
レイアウトの位置を右下に詰めろ。
ほとんど見えなくなるぞ

911 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:27:18.52 ID:TPV7TWbz.net]
殆どじゃダメなんだよ
神経質な奴に見つけられてしまう

912 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 00:33:46 ID:HgOFevSP.net]
お前、質問者か?

913 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 03:17:24.40 ID:7A38Sw4m.net]
テキストファイルから空行を除く方法
findstr /R .

ただし空白やタブのある空行は失敗

914 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:11:07.46 ID:HgOFevSP.net]
>>873
タブやスペースだけの行をスキップするには
findstr /r /c:"[^ ]"
^と]の間にタブとスペース入力
バッチではエディタでタブ入力できるが
コマンドプロンプトでタブ入力するには cmd /f:off で

915 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 05:34:11.61 ID:HgOFevSP.net]
for〜do〜echoでやった方がいいかも



916 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:08:23.94 ID:dZCme2QN.net]
テキストファイルに入ってる文字列を
一行ごとに読み込んで
フォルダを作るバッチをつくったのですが

半角スペースの文字列が分割されてしまいます
これって対応策ありますか?

917 名前:デフォルトの名無しさん mailto:sage [2020/06/27(土) 20:23:13.74 ID:7ozUCHmg.net]
>>876
for /f "tokens=*" %%i in (data.txt) do md "%%~i"

918 名前:デフォルトの名無しさん mailto:sage [2020/06/28(日) 21:21:38 ID:elMokmc1.net]
>>877
できたサンクス
助かった

919 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 15:01:18.03 ID:SwuJ9TNP.net]
ファイル名全角英字の大文字小文字を同じとみなしていた
A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった
Aaは全角英字
芸が細かい、いいか悪いかは別として

920 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:03:57 ID:PSeL/c0z.net]
ワイルドカードの ? の仕様がイマイチ分からない
abc と abc1 のファイルがあったとして

>dir /b abc?
abc
abc1

>dir /b ?abc
ファイルが見つかりません

>dir /b a?bc
ファイルが見つかりません

なぜ見つからないのか
1ないし0個の文字じゃないのか

921 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:07:42 ID:/pl8PJcc.net]
ワイルドカードで?は任意の1文字を示す

922 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:14:29.14 ID:PSeL/c0z.net]
では abc? で abc が一致するのはなぜ

923 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:19:02.81 ID:/pl8PJcc.net]
abc.でマッチするからだと思う

924 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:21:41.87 ID:PSeL/c0z.net]
なるほど。ありがとう

925 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:28:18.05 ID:PSeL/c0z.net]
abc?? や abc??? でも一致するようだ



926 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:49:40.78 ID:tIigavUn.net]
https://www.pg-fl.jp/program/dos/doscmd/str_wildcard.htm
kayuitoko.blog129.fc2.com/blog-entry-2.html

927 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 19:59:31.31 ID:PSeL/c0z.net]
abc??.?? とかも一致するね。たぶん仕様というよりバグ

928 名前:デフォルトの名無しさん mailto:sage [2020/06/30(火) 21:39:19 ID:clO9Gt1K.net]
ピリオドが絡むとワイルドカードはおかしな動きするよ。

filename_yyyy.mm.dd.dat

みたいなもんが

dir *_????.??.??.dat

で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。

filename_yyyy-mm-dd.dat

として

dir *_????-??-??.dat

だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。

929 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:22:43.96 ID:sbIkpZ+y.net]
ワイルドカードは色々とおかしい
>echo > "abc" & echo > "

930 名前: abc"
>for %i in ("abc*") do @echo "%i"
"abc"
" abc"
[]
[ここ壊れてます]

931 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 07:57:25.88 ID:9hqgfVHi.net]
そっちはたぶん8.3形式が引っかかってるんだろう

932 名前:デフォルトの名無しさん [2020/07/04(土) 22:02:55.18 ID:r0U5W+Xd.net]
PC初心者です。
初めてバッチファイルの作成にチャレンジしています。
ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。
コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。
これはなぜでしょうか?回避方法はありますか?

933 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:37:12.45 ID:KIcU78VY.net]
>>891
ggrks

934 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 22:39:29.92 ID:QUXtQ3do.net]
たぶん、A ファイルがあって、それを上書きする時に、
安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、
正常に上書きした後に、Recovery内のA を削除している

ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう

935 名前:891 mailto:sage [2020/07/05(日) 11:17:14.37 ID:eLIuBas1.net]
>>893
ありがとうございます。
バックアップ自体は問題なさそうなので、このままで使ってみようと思います。



936 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 15:06:46.22 ID:1amJ61U+.net]
>>893
>>894
コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの。
ドライブを丸ごと robocopy すると強制的に SH 属性が付くから、最後に attrib -S -H してやる必要があるし、>>894 はそれをしてると思う。
そしたら「Recovery」が見えるようになった、というだけの話でしょ…これ。
コピー元のルートディレクトリに行って「dir /a」して確認してみ?

937 名前:891 mailto:sage [2020/07/07(火) 00:32:35.56 ID:TndHy5rX.net]
>>895
「dir /a」して確認してみたところ、仰る通りでした!「Recovery」フォルダは不要なので削除しました。
有難うございました!

938 名前:デフォルトの名無しさん [2020/07/08(水) 04:28:57.30 ID:lPT19RKJ.net]
超初歩的な質問いいですか?
@https://i.imgur.com/hyYJbJE.png
Ahttps://i.imgur.com/REf3PXQ.png
Bhttps://i.imgur.com/UIqO0ye.png

@のCというフォルダを中にある1.txt 2.txtごとAにコピーしてBのようにしたい時、どう入力したらいいですか?
すでにBのような状態にある時もコピーして上書きしたいのですが
ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので

939 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 04:57:01.58 ID:xPuqy2ih.net]
>>897
せめて、何を試してうまく行かなかった、とか試行錯誤の具体的な
過程があれば説明、答えを教えてくれるひとがいるかも

940 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:13:48.40 ID:H59ZusVp.net]
>>897
普通にcopy使えよ

941 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 05:29:09.34 ID: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 名前:デフォルトの名無しさん [2020/07/08(水) 05:44:34.05 ID:lPT19RKJ.net]
>>900
どうもありがとうございました。

自分でも色々やって試しててうまくいかず質問したのですが、


943 名前:が保存した文字コードがUTF-8だったためでした。
ANSIに変えたらうまくいきました。
[]
[ここ壊れてます]

944 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 11:29:53 ID:Z8A6jaoN.net]
xcopy よりは、robocopy を使った方が良いのでは?

xcopyは、あまり見ない

945 名前:デフォルトの名無しさん [2020/07/08(水) 12:24:18.71 ID:lp5P2pBO.net]
dosで使えなくなるだろ



946 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:46:00.57 ID:Lb+zauke.net]
たしかに、DOSは、Xcopyまでだったか。
pureDOSには、robocopyはないのだな。

947 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 12:56:46.06 ID:plYM8yLW.net]
robocopyは絶望的に遅い
複雑な条件がないのならxcopyがいい

948 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 15:01:55.81 ID:z330e5aM.net]
robocopyは、ミラーリングで使用したときに、
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。

949 名前:デフォルトの名無しさん mailto:sage [2020/07/08(水) 18:21:45.08 ID:ebRsk5Wi.net]
ま?

950 名前:895 mailto:sage [2020/07/08(水) 19:29:53.78 ID:fFkGRU4d.net]
>>896
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ。

951 名前:デフォルトの名無しさん [2020/07/09(木) 01:19:26.67 ID:oG8bZA2s.net]
itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している

952 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 02:32:11.02 ID:zMPqHoYq.net]
>>909
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?

953 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 04:53:54.78 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:30:12.62 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 06:31:35.37 ID:o2t2WZIU.net]
ああ LastAccessTimeじゃくてLastWriteTime



956 名前:デフォルトの名無しさん [2020/07/09(木) 13:30:39 ID:oG8bZA2s.net]
>>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている

957 名前:事が原因でした
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
[]
[ここ壊れてます]

958 名前:デフォルトの名無しさん mailto:sage [2020/07/09(木) 16:17:08 ID:t1UM8kjV.net]
>>914
ファイル名に相当する箇所をクオート

959 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:27:24.24 ID:pJbYwVEp.net]
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1

setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです

960 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 06:51:32 ID:73kyB1S/.net]
Arithmetic

961 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 15:46:16.46 ID:nRIpdjFe.net]
if 感染者数==0 (
goto campaign
) else (
goto campaign
)

962 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 21:08:21.69 ID:NpGOzuTH.net]
w

963 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 22:58:28.42 ID:SqApoBlS.net]
>>916
MSの英語フォーラムとか
英語版StackOverFlowとか
Redditとか
で尋ねたら?英語で。

本当に知りたいなら英語圏に聞け。英語圏に。

964 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:48:35.91 ID:vc+VU4Sj.net]
>>917 が教えてくれてるよ

965 名前:デフォルトの名無しさん mailto:sage [2020/07/15(水) 23:53:31.66 ID:SqApoBlS.net]
>>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?



966 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 00:26:22.36 ID:3qBZIgLF.net]
/a は 単純に answer かな

967 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 05:41:06.12 ID:smyagw08.net]
>>923
まじで?

いや普通にarithmeticでしょw

968 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 11:47:24.17 ID:lU9BoPI+.net]
以降あいうえお作文スレ

969 名前:デフォルトの名無しさん mailto:sage [2020/07/16(木) 13:33:25.11 ID:d6//+ANU.net]
Arithmeticって+-*/のことじゃないの?

970 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 00:25:33.43 ID:C6Q8EyYV.net]
+とか-はarithmetic operatorだね

971 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 01:59:17.03 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 05:56:42.11 ID:mgWYGhz7.net]
if not "%~1"=="" START "" %1

973 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:09:21.26 ID:ddPranTH.net]
if exist "%~1" start "" "%~1"

974 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 08:50:03.50 ID:ddPranTH.net]
for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")

975 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 14:36:51.45 ID:4sfyyT7O.net]
>>929->>931
ありがとうございます
not exist definedの違いなど勉強して盛り込んでみます



976 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 15:31:48 ID:GUFQRDdz.net]
>>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?

977 名前:デフォルトの名無しさん [2020/07/18(土) 15:40:41.02 ID:VVrReUQE.net]
start /?

最初のは "タイトル"

978 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 19:10:23.40 ID:mgWYGhz7.net]
>>933
%1の引用符なしが%~1
だから"%~1"は二重がけではない

979 名前:デフォルトの名無しさん mailto:sage [2020/07/18(土) 20:08:37.75 ID:xxg3trOa.net]
"" START ""
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね

980 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:01:19.79 ID:nPf ]
[ここ壊れてます]

981 名前:Uu10f.net mailto: >>933
ちなみに"start"でもダメ
一般的に内部コマンドは引用符で囲むとエラーになる
昔はstartが外部コマンドだった時もあったが
[]
[ここ壊れてます]

982 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 00:15:51.03 ID:nmSNkapE.net]
>>936
完全にこれでしたすみません

983 名前:デフォルトの名無しさん mailto:sage [2020/07/31(金) 20:28:20.67 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 00:13:59.61 ID:oGghCVi0.net]
>>939
解説お願いします

985 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 01:53:16.42 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 06:07:29.27 ID:hnL660kY.net]
他のとやらが標準出力読めるなら
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか

987 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 10:06:48.10 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 15:48:10.34 ID:mxUlZpQQ.net]
>>942
やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません…
やっぱ無理ですかね…

989 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 16:20:21.81 ID: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 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 17:49:00.41 ID:y/Re9bvj.net]
>>944
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する

実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも

991 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 23:16:08 ID:mxUlZpQQ.net]
どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。

将棋所
shogidokoro.starfree.jp/index.html

USIプロトコル
shogidokoro.starfree.jp/usi.html

USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…

>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどう

992 名前:キれば良いのか… []
[ここ壊れてます]

993 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:01:49.63 ID:SCuZm8dn.net]
>エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも

994 名前:デフォルトの名無しさん mailto:sage [2020/08/02(日) 00:12:10.36 ID:SCuZm8dn.net]
> setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし

995 名前:947 mailto:sage [2020/08/02(日) 15:10:30.75 ID:pqbO4ExB.net]
>>949
やっぱそうですか…
残念ですが諦めます
ありがとうございました



996 名前:デフォルトの名無しさん [2020/08/07(金) 17:37:19.06 ID:ztGuRGFM.net]
フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです

これを

フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2

こうしたいです

ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2


フォルダ名が重複した場合の処理も必要かもしれないです

バッチは読みにくすぎですね

997 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:11:16.88 ID:wnzPeWR5.net]
>>951
そもそもツリー表現が変だと思う。

├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
  ├ファイル1
  └ファイル2

tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?

998 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 22:17:23 ID:5wWI/sIC.net]
>>951
エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど
それを考慮する必要あるの?

999 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:00:00.04 ID:c43C7xo+.net]
for /r %%i in (.)で下位フォルダ名取得
  そのフォルダ内の最初のファイル名を取得(ソート指定)
  対象フォルダ名の変更

もしやるならvbs噛ませると思う

1000 名前:デフォルトの名無しさん [2020/08/08(土) 05:43:20.34 ID:jNP2OM4q.net]
>>953
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです

1001 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:06:33.19 ID:ulitZ7VR.net]
>>955
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d

1002 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 08:25:04.94 ID:HPaGwZBp.net]
どうでも良いことに拘るアホ

1003 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:01:08.32 ID:nLoi7MqI.net]
どうでもいいと言うならテメーがどっちかに決めろや
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ

1004 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:25:59.89 ID:XY4Xe7zO.net]
ところで、質問者本人は、どちらを・・・・。

1005 名前:デフォルトの名無しさん [2020/08/08(土) 09:32:21.16 ID:d2hZRkL/.net]
仕様を全て決めないと取り掛かれないマヌケ多すぎ
無能は本筋から外れたところで発狂してろ



1006 名前:デフォルトの名無しさん [2020/08/08(土) 09:59:17.57 ID:jNP2OM4q.net]
>>956
では今回はエクスプローラ側の並び順がいいです

1007 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 10:22:17.59 ID:cJmgrNkw.net]
>>960
吠えるしかできない間抜け乙w

>>961
ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理

1008 名前:
PowerShellかC#とかでやった方がいい
[]
[ここ壊れてます]

1009 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 11:11:14 ID:6XUmF/b8.net]
とりあえずこんな感じ?(先頭はdir順)
if "%1" neq "" pushd "%~1"
for /d %%i in (*) do call :sub "%%~i"
popd
goto :eof

:sub
for /f "tokens=*" %%j in ('dir /b /on %1') do (
call :rename %1 "%%~j"
goto :eof
)
goto :eof

:rename
ren %1 %2
if errorlevel 0 call :rename-retry %1 %2
goto :eof

:rename-retry
rem ---todo---
goto :eof

1010 名前:デフォルトの名無しさん [2020/08/08(土) 11:14:22 ID:jNP2OM4q.net]
>>962
ではcmdでいいです
あるいはpython環境のほうが楽ですか?
>>963
cmdのコードは理解が難しいですね、、、

1011 名前:デフォルトの名無しさん [2020/08/08(土) 12:00:51 ID:jNP2OM4q.net]
globでやってみます

1012 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 12:16:11.89 ID:XwBZfJ1v.net]
リネーム処理とかはもうPSの方がいいんじゃない?

@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%G in ('dir /ad /b') do (
set N=
for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH"
if defined N (
if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else (
set dt=!date:~0,10!!time: =0!
set dt=!dt:/=!
set dt=!dt::=!
ren "%%~G" "!N!_!dt!"
)
)
)
pause &exit /b

1013 名前:デフォルトの名無しさん [2020/08/08(土) 14:01:14.15 ID:jNP2OM4q.net]
pythonでは向いてないですか

1014 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:20:59.87 ID:IdUt1ux3.net]
pythonはスレチ

1015 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:22:12.94 ID:0U8ymD0p.net]
>>967
ならPythonスレで聞けよ…



1016 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:06.79 ID:Uh3gedSc.net]
dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから
wshでリネーム用のバッチファイルを作る方が楽かな

wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい

1017 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 04:55:36 ID:z2n3MQIn.net]
仕様がないと取りかかれないと言うが
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ

1018 名前:デフォルトの名無しさん [2020/08/09(日) 05:42:25.80 ID:KFfdng53.net]
Ruby で、チェックツールを作った

隠しファイル・ディレクトリは、どう扱うのか?
ファイル名に、. がある場合に、どうするのか?

require 'pathname'

p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" )

folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ
p folders.length, folders

files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ

# nil は、直下にファイルが存在しない、ディレクトリ
nil_cnt = files.count( &:nil? )
p files.length, nil_cnt, files

# compact で、nil の要素を省く
hash = files.compact.each_with_object( { } ) do |file, hash|
filename = file.basename.to_s # ファイル名を、ハッシュに追加していく
if hash.has_key? filename # ハッシュに、既に追加されていれば
hash[ filename ] += 1
else
hash[ filename ] = 1
end
end

# 2 以上のもの、つまり、同じファイル名になったものを表示する
p hash, hash.select { |key, val| val >= 2 }

1019 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:16:13.05 ID:wnSURbps.net]
そろそろ出てくるかと思ってた

1020 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 06:38:11.28 ID:fObB6/0g.net]


1021 名前:ェ通り? []
[ここ壊れてます]

1022 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 08:51:35.00 ID:AwQ8dIl5.net]
>>971
それはSEが無能なだけ
一から十まで決定しなくても開発は進められる

1023 名前:デフォルトの名無しさん [2020/08/09(日) 16:47:47.63 ID:0zxLTv88.net]
典型的な無能の発言だな

1024 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 23:22:34.78 ID:TBMXuXvF.net]
>>972
オワコンRubyジジイが出てきたか
困るよね、こういう老害

>>975
進められるけど手戻りして予算オーバーするわけね
お前が無能

1025 名前:デフォルトの名無しさん [2020/08/10(月) 01:55:02.34 ID:9+h/1Osf.net]
>>977
> 進められるけど手戻りして予算オーバーする

マヌケが要件定義を担当するとそうなるねw
バカな開発チームだと、なぜか「ユーザーが悪い」という認識になるww



1026 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 03:38:30.58 ID:1F6bB0mG.net]
あいまいなのはユーザーが自分でも要求を把握しきっていないためだから
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ

1027 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 04:21:21.96 ID:mFEy/HZR.net]
> あいまいなのはユーザーが自分でも要求を把握しきっていないため

ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ

1028 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 11:53:14.80 ID:ZLJuvAm6.net]
ある程度ブレても、いいように開発できればいいのですけれどもね。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。

1029 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 21:32:34 ID:+SLQPb+P.net]
>>981
それは折衝役がシステム開発に疎いだけ
営業トークだけの人間が事態を悪化させる

1030 名前:デフォルトの名無しさん [2020/08/13(木) 21:47:50.59 ID:5FyzI8Jm.net]
Soft\Soft.ini
12 LastCheck = Mon Aug 3 00:00:00 2020
13 LastUpdate = Mon Aug 3 00:00:00 2020

Soft\Plugins\update.txt
1 Update time: Wed Aug 12 23:59:59 2020

Soft.iniの12行目と13行目「Mon 〜 2020」を
update.txtの1行目「Wed 〜 2020」から置換して
12 LastCheck = Wed Aug 12 23:59:59 2020
13 LastUpdate = Wed Aug 12 23:59:59 2020
のように上書きしたいのですが
batファイルでどのように書けば出来ますか?

1031 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:00:40.82 ID:E452L2zK.net]
>>983
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?

書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…

1032 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:32:48.63 ID:SCMnTycc.net]
Ruby では、これで設定できる

require 'inifile'

str = "Wed Aug 12 23:59:59 2020"

ini = IniFile.new( :filename => "test.ini" )

ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str }
ini.write( ) # save

結果
[abc]
LastCheck = Wed Aug 12 23:59:59 2020
LastUpdate = Wed Aug 12 23:59:59 2020

1033 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:14:47.97 ID:oJspCYOK.net]
イヤミでは、なく止したら? <Ruby

1034 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:32:16.73 ID:cdtRNbgQ.net]
Swiss File Knife

1035 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 09:39:33.54 ID:dCe/n24a.net]




1036 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 14:59:12.49 ID:uGqrrAzw.net]
>>983
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H"
for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H"
REM 比較するならここで処理
REM echo "%VER_UT%" "%VER_IT%"
ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b)
for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do (
if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT%
) else (
if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT%
) else ( >>"%ini%" echo %%G=%%H
)
)
)
REM 空行消したくなければ findstrで読んで行番号を表示させる

1037 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 21:06:33 ID:II+YlR7/.net]


1038 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:02:35.58 ID:TmzvbeJo.net]
>>995
ウンコみたいにダサいコードをよく晒せるな。
生きてて楽しい?

1039 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:14:12.37 ID:B6QaDwta.net]
未来予知乙
生きてる価値もないなw

1040 名前:デフォルトの名無しさん [2020/08/14(金) 22:43:27 ID:9FGl+Ien.net]
低能Ruby厨か

1041 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:06:43.67 ID:TmzvbeJo.net]
リダイレクトカードオープン!
>>991 から >>995 へのアンカーは >>985 へリダイレクトされる!

が、Ruby爺は人格障害者だった!
精神的ダメージを受けていない!

Ruby爺がVZ爺を召喚しようとしている!
が、自分自身だったので召喚できない!

Ruby爺がダサいコードを唱え始めた!
似非プログラマーは発狂した!
歴戦のプログラマーは何も感じていない!

歴戦のプログラマーの攻撃!
Ruby爺は5のダメージ!
歴戦のプログラマーはRuby爺をやっつけた!

経験値を0exp、ゴールドを0G 手に入れた!

「何だよ無職ニートの爺かよ…」と歴戦のプログラマーは思った。

1042 名前:デフォルトの名無しさん [2020/08/14(金) 23:10:45 ID:SCMnTycc.net]
Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?

1043 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:35:08.04 ID:LY+T9Pmp.net]
EDLIN

1044 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 00:03:00.44 ID:fUIncIgN.net]


1045 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 01:45:30.34 ID:t8slxubu.net]
次スレは?



1046 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 02:14:16.82 ID:RWxrHj8y.net]
https://www.vector.co.jp/vpack/filearea/dos/util/bat/

1047 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 06:59:18.06 ID:R7NunwzB.net]
質問いいでしょうか

1048 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒

1049 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<294KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef