_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
[.cmd] バッチファイルスクリプト %13 [.bat]
https://mevius.5ch.net/test/read.cgi/tech/1542779527/l50
[.cmd] バッチファイルスクリプト %13 [.bat]
1002コメント_363KB
全部_1-100_最新50
*スマホ版*_*掲示板に戻る*_*ULA版*
レス数が1000を超えています. これ以上書き込みはできません.
1 :デフォルトの名無しさん:2018/11/21(水) 14:52:07.84 ID:v84I4o+L
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる.
質問, テクニック(JScript, Perl等の埋め込みなど含む), 関連情報のためのスレです.
[*] 何でも無理矢理バッチでやろうとせず, WSH等の使用も検討しましょう.
前スレ.
[.cmd] バッチファイルスクリプト %11 [.bat]
http://echo.5ch.net/test/read.cgi/tech/1424858999/
[.cmd] バッチファイルスクリプト %12 [.bat]
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
それ以前の過去スレ.
%10 http://peace.5ch.net/test/read.cgi/tech/1374205515/
%9 http://toro.5ch.net/test/read.cgi/tech/1335015478/
%8 http://toro.5ch.net/test/read.cgi/tech/1315844420/
%7 http://hibari.5ch.net/test/read.cgi/tech/1298873550/
%6 http://hibari.5ch.net/test/read.cgi/tech/1277465356/
%5 http://pc12.5ch.net/test/read.cgi/tech/1242268171/
%4 http://pc12.5ch.net/test/read.cgi/tech/1229955189/
%3 http://pc11.5ch.net/test/read.cgi/tech/1217860043/
%2 http://pc12.5ch.net/test/read.cgi/tech/1197881068/
%1 http://pc11.5ch.net/test/read.cgi/tech/1178281991/
2 :デフォルトの名無しさん:2018/11/21(水) 14:53:38.55 ID:v84I4o+L
スレ作った.
3 :デフォルトの名無しさん:2018/11/21(水) 15:10:24.99 ID:ROx7bOng
>>1
いちおつ.
ところで, 最近, プロンプトの色が変わってしまったんだが直し方教えてください.
くすんだ感じになってしまう.
color 9f
とか明るい色が顕著.
自分で加えた変更の何が影響したのかわからず, 途方に暮れてます.
4 :デフォルトの名無しさん:2018/11/21(水) 15:28:50.54 ID:0+i4JzOE
タヒ.
5 :デフォルトの名無しさん:2018/11/21(水) 15:34:12.06 ID:0TmpON8B
>>1乙.
テンプレ文だがもうWSHよりはPowershellじゃないのかしら?
6 :デフォルトの名無しさん:2018/11/21(水) 15:54:50.45 ID:waeO4Jak
powershellはここの板に別スレがあってここで取り扱う必用は無い.
一方wshはもはや専用スレは無くこのスレに含めた形で残っている.
7 :デフォルトの名無しさん:2018/11/21(水) 23:59:36.40 ID:VxDAgoaS
>>3 自己レスです.
レジストリの.
HKEY_CURRENT_USER\Console にある ColorTableXX で指定された.
色 00BBGGRR がソレだったので何かが変だった訳でもなく, 忠実に.
この値を読んでいただけでした.
黒をわざわざ 0c0c0c にしていたり, 全テーブル 00 から 15 まで.
全て変更が入っていたので, いつの間に変更したのかという疑問が.
残りますが・・・・・・.
8 :デフォルトの名無しさん:2018/11/22(木) 05:37:11.56 ID:HUZaaTR+
>REG QUERY "HKCU\Console" /f ColorTable*
HKEY_CURRENT_USER\Console
ColorTable00 REG_DWORD 0x0
ColorTable01 REG_DWORD 0x800000
ColorTable02 REG_DWORD 0x8000
ColorTable03 REG_DWORD 0x808000
ColorTable04 REG_DWORD 0x80
ColorTable05 REG_DWORD 0x800080
ColorTable06 REG_DWORD 0x8080
ColorTable07 REG_DWORD 0xc0c0c0
ColorTable08 REG_DWORD 0x808080
ColorTable09 REG_DWORD 0xff0000
ColorTable10 REG_DWORD 0xff00
ColorTable11 REG_DWORD 0xffff00
ColorTable12 REG_DWORD 0xff
ColorTable13 REG_DWORD 0xff00ff
ColorTable14 REG_DWORD 0xffff
ColorTable15 REG_DWORD 0xffffff
9 :デフォルトの名無しさん:2018/11/22(木) 06:45:17.58 ID:y7NAvoby
>>6
> powershellはここの板に別スレがあってここで取り扱う必用は無い.
別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な.
PowerShell の話題が出たら誘導すればいいだけだし.
> 一方wshはもはや専用スレは無くこのスレに含めた形で残っている.
wshの専用スレがないのは需要がないからだろ.
そんなものに対して使用を検討する必要なんてないと思うぞ.
10 :デフォルトの名無しさん:2018/11/22(木) 07:28:54.55 ID:Q9Jr5DcP
>>8
デフォルト値ありがとうございます.
実際にOSインストールしなおしての確認はしてないのですが.
Win10_1809Oct_Japanese_x64.iso の install.wim の.
install.wim\3\Users\Default\NTUSER.DAT
ハイブファイルのロードをしてみると変化していた方の配色と一致してました.
OSクリーンインストール後, しばらく変化に気づいていなかっただけ,
という事のようです.
少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー,
だったのも加味して・・・・・・.
スレ汚し失礼しました.
11 :デフォルトの名無しさん:2018/11/22(木) 08:20:54.79 ID:HUZaaTR+
俺も以前に経験あるが何で勝手に変わるのか未だに不明.
デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど.
12 :デフォルトの名無しさん:2018/11/23(金) 06:41:38.84 ID:Yr5PhtU+
>>8 だが.
俺も"HKCU\Console"消して起動したら.
ColorTable00 が 0x0 から 0xc0c0c になったよ.
今はこれがデフォルトなんだな.
13 :デフォルトの名無しさん:2018/11/23(金) 07:03:12.22 ID:Yr5PhtU+
dir | more でEnter押すと1行ずつ出てくるんだけど.
前からこんな動作だったっけ?
dir /p みたいにページごとにスクロールしないのか?
ちなみにWin10Pro 1809 17763.107 だ.
14 :デフォルトの名無しさん:2018/11/23(金) 07:31:03.82 ID:Yr5PhtU+
すまんhelp見たら.
<ret> 次の行を表示します.
になってた.
あとスレチだが gpg -d がエラー出る. . .
15 :デフォルトの名無しさん:2018/11/23(金) 13:03:06.27 ID:H8vDP5fG
このスレってテンプレに「 次スレは>>970踏んだ人が立てましょう 」とかないんだね.
毎回同じ人が立ててるのかな?
16 :デフォルトの名無しさん:2018/12/02(日) 11:33:28.29 ID:WVaKBjKU
ffmpegで動画容量を減らしています.
この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか.
また, バッチファイルでなくとも他に良い方法などありましたらぜひお願いします.
ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4
ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4
普段はこれを実行しています.
17 :デフォルトの名無しさん:2018/12/02(日) 14:26:12.73 ID:uIlAasYL
シェルスクリプト・PowerShell もあるけど,
安全性のため, ダブルクリックでは動かない.
ダブルクリックで動くのは, バッチファイルだけ.
18 :デフォルトの名無しさん:2018/12/03(月) 10:52:45.51 ID:mYQmjn55
>>16
オイラはSendToにバッチファイル(のショートカットでもOK)入れて右クリックの送るから使ってる.
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo
2-passは使ったことないけど, とりあえず >>16 の処理をするようになってるはず.
適当なファイル名を拡張子batで保存して使ってちょ.
書き込み時にインデント消えちゃうかもしれないけど, 3行目の&&の前だけは先頭に空白1文字以上入れてちょ.
for %%f in (%*) do (
ffmpeg -y -i "%%~ff" -b:v 500k -pass 1 -f mp4 NUL
^
&& ffmpeg -i "%%~ff" -b:v 500k -pass 2 "%%~df%%~pf%%~nf_output%%~xf"
)
pause
自動でウィンドウ閉じたければ最後のpauseはいらない.
出力ファイル名は入力ファイル名_outputにしてるけど, お好みで変えればよい.
複数ファイルも順番に処理するよ.
19 :デフォルトの名無しさん:2018/12/04(火) 18:23:57.45 ID:YV7FMG5g
typeコマンドってパイプかますと出力が変わるんだな. . .
以前はこんなじゃなかったような気がするが?
>type a
abc漢字def
>nkf -SjO a b
>nkf -Js b
abc漢字def
>type b
abc4A;zdef
>type b | more
abc$B4A;z(Bdef
20 :デフォルトの名無しさん:2018/12/04(火) 20:16:59.52 ID:Mme7W69z
"C:\hoge.exe"というプログラムを再起動したくて.
taskkill /im hoge.exe /f
start C:\hoge.exe
という2行のバッチを書いたら, hoge.exeがまだ終了しきってなくて起動しませんでした.
hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので.
タスクリストから居なくなったことを確認してから起動したいのですが.
どう書けばよいのでしょうか?
21 :デフォルトの名無しさん:2018/12/04(火) 21:09:17.31 ID:YV7FMG5g
TASKLISTで確認?
22 :デフォルトの名無しさん:2018/12/05(水) 10:02:24.61 ID:miUFx5r6
>>20
こんな感じでどうだろうか?
taskkill /im hoge.exe /f
:check_run
timeout /t 1 /nobreak >nul
tasklist | find "hoge.exe" >nul && goto
check_run
start C:\hoge.exe
23 :デフォルトの名無しさん:2018/12/05(水) 15:06:21.73 ID:B1LaPmLX
>>20
tasklist xx|findstr xx
if %errorlevel% == 0
24 :デフォルトの名無しさん:2018/12/05(水) 15:22:10.57 ID:GaZgkwnu
今help見たら, まだ直ってねえ. . .
tasklist/?のフィルター名IMAGENAMは間違いだ. . .
for /f "skip=1" %%i in ('tasklist /fi "imagename
eq hoge.exe"')do goto
check_run
25 :デフォルトの名無しさん:2018/12/05(水) 15:39:45.58 ID:GaZgkwnu
あ, 条件が逆w. . .
26 :デフォルトの名無しさん:2018/12/05(水) 15:42:42.33 ID:GaZgkwnu
逆じゃないなw ボケたなあ. . .
27 :20:2018/12/05(水) 22:04:34.15 ID:82viBDdQ
みなさんレスありがとうございます!
明日職場で試してみますね.
恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので.
(WinXP Homeです. Win7が故障中なので・・・)
どうもありがとうございました!
28 :デフォルトの名無しさん:2018/12/05(水) 22:18:55.09 ID:NGe7cQU/
XPならtimeoutも無いから.
29 :デフォルトの名無しさん:2018/12/06(木) 05:58:03.99 ID:+WfW7iJP
XPってtaklistすらないんか・・・. ポカーン.
にしては[下矢印]のスレは盛況だな. w.
WindowsXPを使い続けるよ Part94
https://mevius.5ch.net/test/read.cgi/win/1543650955/
30 :デフォルトの名無しさん:2018/12/06(木) 06:30:42.74 ID:U/lGMKnD
XP Proにはあるんだが.
XP HomeではPowerShellのGet-Processで代用できるらしいよ.
PowerShell1.1以降らしいから, PowerShell2.0をインストールしないといけないけど.
31 :デフォルトの名無しさん:2018/12/06(木) 15:26:32.29 ID:iJNEICpM
Sysinternals Suite にある, pslistを始めとするコマンド群を利用すれば,
XPでも同等のことは出来る.
32 :デフォルトの名無しさん:2018/12/06(木) 21:28:59.92 ID:HLPPFLjR
XPの駆除には苦労した.
Vistaの切られぶりには辟易.
管理者って損な役回りだよなぁ・・・.
今は7の駆除中.
33 :デフォルトの名無しさん:2018/12/06(木) 23:38:01.47 ID:UfR2YFj9
>>18
ありがとうございます.
レス内のものは上手く行きませんでしたが別でうまく行くものを作るためのヒントになりました.
34 :デフォルトの名無しさん:2018/12/07(金) 11:34:54.02 ID:k1b27fN5
>>19
それパイプ処理してるコマンドの方の問題じゃなくて?
35 :デフォルトの名無しさん:2018/12/07(金) 12:17:44.85 ID:cJMcluJv
俺には何が原因か分からない.
画面コンソール入力するたびに最下段にスクロールするし.
スレチだけど.
gpg -d で画面表示させるとエラー.
gpg -h で画面表示させると文字化けまくり.
cmd の表示関係が最近おかしい. . .
36 :デフォルトの名無しさん:2018/12/07(金) 19:56:05.65 ID:iBsL10N5
xcopyで出来ることは全てrobocopyでも出来るという認識で良いのでしょうか?
37 :デフォルトの名無しさん:2018/12/07(金) 21:49:55.05 ID:cUniS7mm
>>36
削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな.
ただ, xcopy が対話指向なのに対して robocopy はバッチ指向になってる. (言い換えればログ指向)
コマンドを置き換えれば良いというものではない. 場合によってはログが五月蠅い.
ま, 今時, ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う.
38 :not 36:2018/12/07(金) 23:31:50.72 ID:J47iFz0r
>>37
>ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う.
そうだったのか, 情報ありがとう.
調べたらxcopyを使ったバッチファイルがあった, なおそ.
39 :デフォルトの名無しさん:2018/12/08(土) 20:14:50.36 ID:Zhb2FJyz
xcopyはほぼフォルダ丸ごとコピー用途に使ってたから.
/mirオプションで済むrobocopyの方が覚えやすくて助かる. w.
コピー自体も高速らしいし.
40 :37:2018/12/08(土) 22:52:01.33 ID:i9Z2WdJR
>>38
xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ.
ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい.
対話式に目で動作を見ながらの分にはいいけど, それ以外の用途にはお勧めしないのだ.
41 :デフォルトの名無しさん:2018/12/08(土) 23:16:46.42 ID:hZepSGXS
単純コピーだったらxcopyの方がはるかに早かった気がするんだが.
42 :デフォルトの名無しさん:2018/12/08(土) 23:33:03.66 ID:fChhgbp6
ネット越しだと, SSHが使えるrsyncがいいんだけど,
Windowsで使うにはcygwinが必要になるのでやや使いづらいかも.
そこで, クラウドでも使えるrsyncという触れ込みのrcloneがいいかな.
タイムスタンプだけが変更された時でも, 実体をコピーすること無く, タイムスタンプだけを変更するなど,
それなりに賢い処理がされるようだ.
もちろんローカルファイル同士でも使える.
バッチによる基本的なバックアップ用途の使い方しかしていないけど, とにかく多機能でおすすめ.
GoogleドライブやOneDriveなんかのクラウドへのバックアップも, バッチ処理で簡単にできる.
43 :39:2018/12/09(日) 10:35:27.52 ID:lZKvlyRa
>>41
過去にrobocopyのが速いみたいな記事を見た気がしたんだが.
今探しても見当たらないので記憶違いかもしれぬ・・・.
44 :デフォルトの名無しさん:2018/12/12(水) 12:03:09.26 ID:wwhUpKQ/
Windows 10 19H1 で notepad が.
BOM無しUTF-8がデフォルト になるそうだな. . .
いっそのこと コマンド プロンプトも変えてくれ.
45 :デフォルトの名無しさん:2018/12/13(木) 07:50:54.80 ID:3pDLloxA
バッチファイルの第一引数をファイル名にしたとして.
ファイル名に&とか^が入るときどうやって処理すればいいの?
代入するとエスケープされて消えちゃうのよ.
46 :デフォルトの名無しさん:2018/12/13(木) 09:07:24.92 ID:J8CqZcRY
結局, BOM の有無を気にする開発者がいなかった.
欧米人には関係ないから.
ただ, Explorer では, BOMが無いと, UTF-8・sjis の区別がつかないから, 文字列で検索できなくなるから,
漏れは, Windows10・WSL・Ubuntu16.04 で, grep を使っている.
47 :デフォルトの名無しさん:2018/12/13(木) 09:48:12.16 ID:vKHUraGB
>>45
入らないようにする.
48 :デフォルトの名無しさん:2018/12/13(木) 16:46:34.51 ID:H7Y/MSWd
>>45 バッチファイルに直接D&Dで起動用のバッチ.
というか他の起動方法なら引数を引用符で囲むだけだし.
@ECHO OFF
IF "%~1"=="1" SHIFT /1 & GOTO MAIN
SET "A=%CMDCMDLINE:"=*%"
SET "A=%A:~0, -1%"
FOR /F "tokens=2* delims=*" %%I IN ("%A%")
DO SET "B=%%I"& SET "C=%%J"
SET E="%B%" 1
:NEXT_ARG
SET "A=" & FOR /F "tokens=*" %%I IN
("%C%")DO SET "A=%%I"
IF NOT DEFINED A %E%
IF "%A:~0, 1%"=="*" (SET "D=*")
ELSE SET"D= "
FOR /F "tokens=1* delims=%D%" %%I IN ("%A%")
DO SET"B=%%I" & SET "C=%%J"
SET E=%E% "%B%" & GOTO NEXT_ARG
:MAIN
SET /A N=0
:LOOP
IF "%~0"=="" PAUSE & GOTO :EOF
ECHO ARG%N%=%0
SET /A "N+=1" & SHIFT & GOTO LOOP
49 :デフォルトの名無しさん:2018/12/14(金) 07:43:35.08 ID:0Ppktz+s
ありがとうございます.
50 :デフォルトの名無しさん:2018/12/15(土) 01:06:37.50 ID:1s8Yv8lB
dir ってオプション(スイッチ)の順番で表示が異なるのを発見.
CD /D C:\
dir /AH /A-D
dir /A-D /AH
51 :デフォルトの名無しさん:2018/12/15(土) 04:41:20.49 ID:s5MEHoIJ
話変わるがスペース無くてもOK.
CD/D"C:\
DIR/AH/A-D
DIR/A-D/AH
52 :デフォルトの名無しさん:2018/12/15(土) 08:56:57.96 ID:q+o88Lhc
その仕様のせいでパス区切り文字を/にすることができないという呪いが.
53 :デフォルトの名無しさん:2018/12/16(日) 12:34:58.23 ID:2Wn8M764
仕様がカオスになってるよね.
はやくLinuxcommandも標準対応して欲しい.
54 :デフォルトの名無しさん:2018/12/17(月) 00:07:47.83 ID:C+acxNdu
>>53
DOSってMS最古だから, ビルベイツ謹製のコードか仕様が残っていて.
今の社員は恐れ多くて変えられない.
ということにしておこう.
55 :デフォルトの名無しさん:2018/12/17(月) 00:08:37.24 ID:msnfpX97
>>51
そうだったのか, サンクス.
56 :デフォルトの名無しさん:2018/12/17(月) 07:58:43.76 ID:xQB1O269
>>53
永久にならないから忘れろ.
57 :デフォルトの名無しさん:2018/12/17(月) 19:54:34.22 ID:zeK+PGUB
>>43だけどやっぱわからん!
sendtoにバッチファイル入れといてフォルダを指定します.
指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない.
batファイル &というフォルダを右クリック送るをした時.
@echo off
echo "%~f1" これは表示できる.
set fname="%~f1"
echo "%fname%" &や^が消えてしまう.
どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし.
58 :デフォルトの名無しさん:2018/12/17(月) 20:25:30.59 ID:CiJxr7Yn
set "fname=%~f1"
59 :デフォルトの名無しさん:2018/12/17(月) 20:26:56.58 ID:uU80GVRL
>>57
echo %fname%
60 :デフォルトの名無しさん:2018/12/17(月) 20:28:40.66 ID:uU80GVRL
あ, ごめん.
どっちでもいいよ.
61 :デフォルトの名無しさん:2019/01/07(月) 13:47:43.45 ID:ZTiiH/I2
バッチファイル中の*.*で, そんなファイルはないとエラーが出た.
もう一度実行するとこれまでどおり問題なしに実行.
windows更新の影響かセキュリティソフトのせいかも知れないが,
ウィルスがコマンドをすり替えている可能性もあるから, バッチ中のコマンドはパスも含めて.
たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った.
62 :デフォルトの名無しさん:2019/01/07(月) 15:56:36.05 ID:ZNh/EsxI
話変わるが.
今は *.* としても意味無いよ * だけでOK.
63 :デフォルトの名無しさん:2019/01/07(月) 16:12:14.33 ID:06gMfJVc
>>62
そうですか, 昔のくせでつい.
ありがとうございます.
64 :デフォルトの名無しさん:2019/01/07(月) 17:05:59.89 ID:ZNh/EsxI
色んなソフト入れると %PATH% が膨れ上がる.
使わないパスが30個とか..
気味が悪いのでバッチの先頭に.
PATH C:\WINDOWS\system32;C:\WINDOWS;
と書くようにしてる.
65 :デフォルトの名無しさん:2019/01/07(月) 20:11:25.89 ID:xW7Pde1m
既に存在しないフォルダが環境変数PATHに設定されてるとコマンド検索がそこで止まってしまう.
こんなのを使って時々確認するといい.
powershell $env:path -split ';'^|%{$_ , (test-path $_ -patht
cont ^)}
66 :デフォルトの名無しさん:2019/01/11(金) 19:37:34.13 ID:WNI2j4XF
遅延環境変数OFFでやると面倒だ.
ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る.
67 :デフォルトの名無しさん:2019/01/12(土) 00:39:03.28 ID:IAz54C40
PowerShell で, $env:path -split ';' と打つと,
C:\WINDOWS\system32
C:\WINDOWS
Intel を除いて, これらが先頭に来る.
68 :デフォルトの名無しさん:2019/01/12(土) 07:44:55.84 ID:uK0WXiBn
>>67
普通はね.
69 :デフォルトの名無しさん:2019/01/14(月) 09:23:20.28 ID:e5YcHVOA
@echo off & set "p=%path%"
:v
for /f "delims=; tokens=1*" %%i in ("%p%")
do set "p=%%j"& echo "%%i"
if defined p goto :v
おらの環境.
"C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
"C:\ProgramData\Oracle\Java\javapath"
"C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common"
"C:\Program Files (x86)\Intel\iCLS Client\"
"C:\Program Files\Intel\iCLS Client\"
"C:\WINDOWS\system32"
"C:\WINDOWS"
70 :デフォルトの名無しさん:2019/01/14(月) 09:53:16.85 ID:e5YcHVOA
マイクロソフトがどこまでチェックしているか知らんが.
コマンド追加したら干渉する可能性はあるな.
71 :デフォルトの名無しさん:2019/01/20(日) 00:11:28.57 ID:xs+avKSw
C:\HOGE
+--aaa
| +--old
| | aaa1.bat
| |
| +--src
| aaa1.bat
|
+--bbb
| +--old
| | bbb1.bat
| |
| +--src
| bbb1.bat
|
+--ccc
+--old
| ccc1.bat
|
+--src
ccc1.bat
[上矢印]のoldフォルダとその中身を一括で削除したいのですが, コマンドでは難しいでしょうか?
72 :デフォルトの名無しさん:2019/01/20(日) 00:13:41.92 ID:xs+avKSw
[上矢印]HOGEの下には実際にはaaa~cccのようなフォルダが無数にあります・・・.
73 :デフォルトの名無しさん:2019/01/20(日) 00:15:44.50 ID:xs+avKSw
[上矢印]たびたびすみません.
正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です.
74 :デフォルトの名無しさん:2019/01/20(日) 02:15:14.20 ID:pk2ilGy6
for /d /r
とif文つかえばいいだけじゃん.
75 :デフォルトの名無しさん:2019/01/20(日) 04:39:06.95 ID:K0yQSeRR
del
76 :デフォルトの名無しさん:2019/01/20(日) 07:09:39.32 ID:YWDkxQqJ
FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2>
nul
77 :デフォルトの名無しさん:2019/01/20(日) 07:32:36.37 ID:YWDkxQqJ
バッチにするまでもない.
直接入力なら%%を%に.
78 :デフォルトの名無しさん:2019/01/20(日) 09:22:02.93 ID:pk2ilGy6
>>76
rdのところ.
rd/s/q "%%~I\old\"
にした方がよいと思う.
79 :デフォルトの名無しさん:2019/01/20(日) 10:27:11.29 ID:pk2ilGy6
おいらならこう書く.
for /d /r c:\hoge %a in (old) rd /q /s %a
80 :デフォルトの名無しさん:2019/01/20(日) 10:28:21.11 ID:xs+avKSw
>>76
どうもありがとうございます!バッチリ削除できました.
>>78
私も>>78さんのコメントを読んで例えば"old2"という名前のフォルダがあったらこれも消えてしまうのかも?と思ったのですが,
そんなことはありませんでした.
でも見た目でそのような疑問を覚える人もいるかもしれないなと思い, 特に不要ではあるのですが"old"のあとに"\"を付けることにしました.
ありがとうございます.
81 :デフォルトの名無しさん:2019/01/20(日) 10:36:33.72 ID:xs+avKSw
でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か・・・.
82 :デフォルトの名無しさん:2019/01/20(日) 10:54:52.71 ID:YWDkxQqJ
>>78 なぜ?
>>79 ワイルドカードじゃないとオプション /D は無意味.
これでもいいが.
FOR /R %%I IN (OLD) DO RD/S/Q "%%I" 2> NUL
83 :デフォルトの名無しさん:2019/01/20(日) 11:08:28.37 ID:pk2ilGy6
>>82
>ワイルドカードじゃないとオプション /D は無意味.
ちゃんとフォルダのみをフィルタするよ, 試してみてね.
84 :デフォルトの名無しさん:2019/01/20(日) 11:18:39.20 ID:YWDkxQqJ
そうかな?
RD の前に echo 付けて見たら?
ファイルでも RD OLD がでるぞ.
FOR のヘルプをよく見てね.
85 :デフォルトの名無しさん:2019/01/21(月) 21:18:15.33 ID:9WBiq3dN
ざっくり言うと,
EternalForceBlizzard.bat C:\hoge
とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ・・・かな.
>>82
どうでもいいけど全部大文字とかやめれ.
内容は知らんが死ぬほどダサい.
86 :デフォルトの名無しさん:2019/01/21(月) 21:58:45.27 ID:rFmuVz+a
今後は小文字にするよ. 気が変わるかもしれんが.
forの括弧内のファイルは存在しなくてもスキップしない.
例外はワイルドカードで対象はファイル.
/dだと対象はフォルダ.
ただそれだけの話だ.
87 :デフォルトの名無しさん:2019/01/22(火) 11:52:34.58 ID:dXptnPwJ
findstrの結果に文字列を連結したいのですがうまくいきません.
どうしたらよういでしょういか?
cd /d %~dp0
type test1.txt | echo"りんご" & findstr "りんご"
>>out.txt
88 :デフォルトの名無しさん:2019/01/22(火) 14:00:46.60 ID:CTNOEPFx
call :a "りんご" test1.txt > out.txt & goto :eof
:a
echo %1 & findstr %1 %2
89 :デフォルトの名無しさん:2019/01/22(火) 15:31:22.37 ID:dXptnPwJ
>88
ありがとうございます.
[りんご]
[りんごを含んだ文]
[りんごを含んだ文]
[りんごを含んだ文]
といった感じにでました.
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
という感じはならないでしょうか?
90 :デフォルトの名無しさん:2019/01/22(火) 15:58:11.82 ID:CTNOEPFx
call :a "りんご" test1.txt > out.txt & goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1
%%i
91 :デフォルトの名無しさん:2019/01/22(火) 16:44:03.03 ID:dXptnPwJ
>90
おお!, うまくいきました. ありがとうございます!.
エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです.
92 :デフォルトの名無しさん:2019/01/22(火) 17:08:05.17 ID:nMQEwTi4
単に行数を少なくするだけの&の使い方で.
デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい.
93 :デフォルトの名無しさん:2019/01/22(火) 17:31:44.20 ID:CTNOEPFx
そういうのは質問者の方で調整よろしくお願いします.
94 :デフォルトの名無しさん:2019/01/22(火) 18:02:51.94 ID:nMQEwTi4
>>93
別に>>90に文句言ってるわけじゃなくて.
質問者が&に感心してたので, 質問者にアドバイスのつもりで書いただけ.
95 :デフォルトの名無しさん:2019/01/22(火) 18:15:04.06 ID:CTNOEPFx
言いたい事は分かります.
はっきり言って自分用のバッチはこんな書き方はしません.
行数を抑える為に繋いでるだけなんで.
バランス見て改行します. すみません.
96 :デフォルトの名無しさん:2019/01/22(火) 18:27:13.64 ID:nMQEwTi4
って思ったら, 質問者は&に感心してたわけじゃなくて.
逆に&で簡単に書けない点が不満なんだな.
97 :デフォルトの名無しさん:2019/01/22(火) 19:15:10.41 ID:ak2Ch+AT
Basic言語では&は文字列結合演算子だが.
バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる.
文字列結合演算子自体が存在しない.
98 :デフォルトの名無しさん:2019/01/23(水) 13:46:03.43 ID:HgbeZ9kI
昨日の質問者です, たびたびすみません.
複数ワードを処理しようとして.
call :a "りんご" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1
%%i
call :a "みかん" test1.txt > out.txt
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1
%%i
としたところ, うまくいったのですが.
これが5項目くらいになると.
dos窓に「別のプロセスが使用中です」と表示されてしまいます.
なにかメモリ的なものがいっぱいになるのでしょうか?
回避方法はありますでしょうか?
99 :デフォルトの名無しさん:2019/01/23(水) 15:17:41.73 ID:HwNiCy+r
意味不明だが?
@echo off
call :a "りんご" test1.txt > out.txt
call :a "みかん" test1.txt >> out.txt
goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1
%%i
100 :デフォルトの名無しさん:2019/01/23(水) 15:33:11.44 ID:HwNiCy+r
今時, メモリ不足とか滅多に無いよ.
バッチで80byte文字列の一万個の配列変数とかやったことあるけど.
問題なかったよ.
101 :デフォルトの名無しさん:2019/01/23(水) 16:10:02.06 ID:HgbeZ9kI
>99さんの書式にするとうまくいきました.
おそらく私が.
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1
%%i
をいっぱい書いてしまったからかもしれません.
102 :デフォルトの名無しさん:2019/01/24(木) 07:52:40.56 ID:ElV7iNpQ
文字列:形式の「ラベル」はバッチファイル内でユニークにしてください.
今回のa:は共通サブルーチンなので, バッチ内で1つで良く, コードの最後に置きましょう.
サブルーチンを使う場合, メインルーチンのラストにはgoto :eof
を書くようにしてください. これが無いとメインが終わった後にまたサブルーチン処理が行われます.
103 :デフォルトの名無しさん:2019/01/24(木) 07:58:36.47 ID:ElV7iNpQ
またバッチ内で複数のサブルーチンを使いたい場合はそれぞれのサブルーチンの後にexit /bのコマンド行を付けてください.
exit /bによってメインルーチンに処理が戻ります.
これ無いと下の行に処理が遷移してしまいます.
104 :デフォルトの名無しさん:2019/01/24(木) 10:48:11.21 ID:4/xiY5nl
なるほど, 丁寧な説明ありがとうございます.
105 :デフォルトの名無しさん:2019/01/24(木) 11:16:25.14 ID:tFfJW+eT
cmdの基礎を勉強しろ.
あまりにも質問のレベルが低いとレスがつかないと思え.
106 :デフォルトの名無しさん:2019/02/16(土) 02:44:12.08 ID:Aqg/y48e
for %%I in (*.txt) do (
echo #%%I
)
*.txt だけでなく *.txt2 などもあれば表示する.
.txt などの拡張子が3文字の時だけ4文字目以降を無視する.
拡張子が2文字の時は問題なし.
バグか仕様か.
107 :デフォルトの名無しさん:2019/02/16(土) 14:24:30.26 ID:dbRt9asv
dir もね.
他にもMS-DOS用の短い名前に反応したり.
ワイルドカードは, いやらしい動作をするね.
108 :デフォルトの名無しさん:2019/02/16(土) 15:05:34.51 ID:H4+bjsi1
dir c:\*1
でProgram Filesが表示されるやつか.
109 :デフォルトの名無しさん:2019/02/16(土) 15:23:46.61 ID:dbRt9asv
del *~*
は危険.
110 :デフォルトの名無しさん:2019/02/16(土) 18:22:32.57 ID:VRMsBAkU
8.3形式でもファイル見てるのね.
111 :デフォルトの名無しさん:2019/02/16(土) 21:48:09.10 ID:6/sri1HY
>>107
dirまでそうでしたか.
知らなかったのは私だけで, みんな知ってたのですね.
DOSの特別実装仕様ということにしておこう.
112 :デフォルトの名無しさん:2019/02/17(日) 08:58:17.36 ID:2q4tHixb
*.txt2 のファイル名を dir/x で見ると.
*~1.TXT とか *~2.TXT になってるから.
dir *.txt
dir *txt
dir *xt
dir *t
で一致するということね.
113 :デフォルトの名無しさん:2019/02/17(日) 10:18:01.03 ID:vf3NvI2M
やっても良いPCなら OS インストール直後に.
>fsutil 8dot3name set
で set 1 をして 8.3名作成を無効化するけど.
>fsutil 8dot3name strip
を実際にはしたことがない俺チキン.
114 :デフォルトの名無しさん:2019/02/17(日) 18:32:35.83 ID:2q4tHixb
これでOK.
for %%i in (*.txt) do if /i "%%~xi"==".txt"
echo %%i
115 :デフォルトの名無しさん:2019/02/18(月) 23:00:03.97 ID:xTG5esR6
以下のように「C:\hoge」の下の全ファイルのファイル名(拡張子は除く)を.
"aaa"に書き換えたいのですが, どのようなコマンドを書けば良いのでしょうか?
* 書き換え前.
C:\hoge
| あああ.txt
| いいい.xlsx
|
+--hage
| ううう.xml
| えええ.docx
|
+--hige
おおお.jpeg
かかか.gif
* 書き換え後.
C:\hoge
| aaa.txt
| aaa.xlsx
|
+--hage
| aaa.xml
| aaa.docx
|
+--hige
aaa.jpeg
aaa.gif
116 :デフォルトの名無しさん:2019/02/18(月) 23:02:17.45 ID:xTG5esR6
すみません, higeの下のファイル名がずれてしまいました.
正しくは[下矢印]です.
* 書き換え前.
+--hige
おおお.jpeg
かかか.gif
* 書き換え後.
+--hige
aaa.jpeg
aaa.gif
117 :デフォルトの名無しさん:2019/02/18(月) 23:05:19.42 ID:xTG5esR6
それと, 同一フォルダ内に同じ拡張子のファイルは複数存在しません.
118 :デフォルトの名無しさん:2019/02/18(月) 23:08:58.74 ID:rXc7x2eo
for文とmv組み合わせでしょ.
サイト2個検索した方が聞くよりはやくできるとおもうけど.
なんで質問したの?
119 :デフォルトの名無しさん:2019/02/19(火) 06:30:48.56 ID:Hb9ZoB2m
>>115
for /r "c:\hoge" %%i in (*) do ren "%%~fi"
"aaa%%~xi"
120 :デフォルトの名無しさん:2019/02/19(火) 09:50:06.91 ID:Hb9ZoB2m
話変わるが.
for に /r を付けたら.
%~nxi の引用符が何故かとれない.
>for %i in ("abc") do @echo %~nxi
abc
>for /r %i in ("abc") do @echo %~nxi
"abc"
>for /r %i in ("abc*") do @echo %~nxi
abc
121 :デフォルトの名無しさん:2019/02/19(火) 10:03:42.75 ID:/Qrw8ZSg
管理者として実行したいアプリ, さらに優先度を低で起動させる方法ありますか?
さらにそれをスタートアップに登録したいんです.
122 :デフォルトの名無しさん:2019/02/19(火) 10:09:52.10 ID:e0NdV1CM
タスクに登録すれば?
123 :デフォルトの名無しさん:2019/02/19(火) 10:57:12.10 ID:Hb9ZoB2m
start /LOW のコマンドのショートカットを.
スタートアップのフォルダに入れりゃいいんじゃね.
ショートカットの設定は管理者にして.
124 :117:2019/02/19(火) 20:46:10.94 ID:kZ82VOHH
>>118
ネットで探したのですが, バッチファイルをやり始めて日が浅いので使うコマンドの見当も付きませんでした.
今日職場で必要だったので聞いてしまいました.
>>119
助かりました.
どうもありがとうございます.
125 :デフォルトの名無しさん:2019/02/20(水) 00:04:58.50 ID:GzdyKGwx
聞いたほうが早いならそれでもいいと思うよ.
126 :デフォルトの名無しさん:2019/02/20(水) 08:00:48.35 ID:vs0GH/UB
AzureAD, Office365を使うなら(Office365についてはGraphの使いこなしも必須). バッチやVBSの代替としても必須.
「Powershellが出来る」だけではなくPowershellも活用し, なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素.
127 :デフォルトの名無しさん:2019/02/20(水) 08:01:45.93 ID:vs0GH/UB
すみません.
>>126は誤爆.
128 :デフォルトの名無しさん:2019/02/21(木) 18:42:23.51 ID:WAQ7+H44
環境変数の中に=があると.
変数参照が変な事になってくるな. . .
>set a=b=c
>echo %a%
b=c
>echo %a=b%
c
129 :デフォルトの名無しさん:2019/02/21(木) 19:45:58.39 ID:bhin4IwL
イコールは^つけないと特殊な動作するはず.
130 :デフォルトの名無しさん:2019/02/21(木) 20:25:05.21 ID:WAQ7+H44
俺も最初はそう思ったんだけど. . .
>set a=b^=c
>echo %a=b%
c
131 :デフォルトの名無しさん:2019/02/21(木) 21:37:53.86 ID:m0MzDbdd
ならないんだけど?(win7)
BATだと.
ECHO は <ON> です.
ダイレクトだと.
%a=b%
132 :デフォルトの名無しさん:2019/02/21(木) 21:41:55.31 ID:oU3vU03f
自分の環境でもならない.
win10
133 :デフォルトの名無しさん:2019/02/21(木) 22:19:20.44 ID:WAQ7+H44
バッチでやって見た.
set a=b^=c
echo %a%
echo %a=b%
結果.
b=c
c
set "a=b=c" でも同じ.
Microsoft Windows 10 Pro
10.0.17763 N/A ビルド 17763
>set a
a=b=c
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\ore\AppData\Roaming
134 :デフォルトの名無しさん:2019/02/21(木) 23:16:08.70 ID:WAQ7+H44
>>133
たった今, 品質更新プログラムのインストールしました.
KB4487044 (OS ビルド 17763.316)
なんと正常になったようです.
結果.
b=c
ECHO は <OFF> です.
135 :デフォルトの名無しさん:2019/03/01(金) 16:41:47.85 ID:7J1MA7z+
1.batファイルで.
start ***.bat
を実行してその***.batの中に.
call ***.exe
があるんだけど.
最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?
136 :デフォルトの名無しさん:2019/03/01(金) 16:56:22.92 ID:1DJZnnpK
start "" /min "hoge.exe"
137 :デフォルトの名無しさん:2019/03/12(火) 10:13:24.40 ID:2ZxzO4Nc
forで行取得して並列で処理してるんですが, 一度にすべて実行するのでPCの負担が大きいです.
さらに回数指定するには, どうすればできますか?
138 :137:2019/03/12(火) 11:09:28.51 ID:2ZxzO4Nc
すみません. 説明不足でした.
初めにforでテキストを取得しsetに割り当て, 全てをコマンドとして生成して並列処理しています.
並列で3回ずつ実行し終了をループしたいです.
139 :デフォルトの名無しさん:2019/03/12(火) 13:04:35.48 ID:6sZCRvoD
batを見ないと良く分からん.
140 :デフォルトの名無しさん:2019/03/12(火) 14:22:43.31 ID:JT0qCUVC
FORでサブルーチンをCALLするようにして,
3回呼び出されたら実行するようにするとかかな.
これ以上は元のバッチを見ないと何とも.
141 :デフォルトの名無しさん:2019/03/12(火) 14:35:25.41 ID:ollYoz5v
並列処理ということは, 非同期呼び出しを使ってるわけだから.
その呼び出した処理の終了をどうやって感知するかが肝.
多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う.
142 :デフォルトの名無しさん:2019/03/12(火) 20:57:10.17 ID:kFHhQjU8
んでもそんな高度な事がしたいならVCあたりで作っちゃいかんの?
143 :デフォルトの名無しさん:2019/03/14(木) 00:11:57.06 ID:MfJOghkN
-- A.bat --
:loop
if "%~1" == "" goto end
call B.bat "%~1"
shift
goto loop
:end
-- B.bat --
--
if exist "%~dpn1_hoge.txt" (
set XXX=--option "%~dpn1_hoge.txt"
)
--
A.batに複数ファイルをD&DしたときにB.batのif
existで指定したファイルがA.batに入力したファイルに1つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます.
これを回避するにはどうすればいいでしょうか?
144 :デフォルトの名無しさん:2019/03/14(木) 00:20:05.87 ID:Gms0hgp4
毎回リセットしとけば?
b.batの先頭でset xxx=を書くとかb.batをsetlocal~endlocalするとか.
145 :デフォルトの名無しさん:2019/03/14(木) 00:26:03.45 ID:Gms0hgp4
すまん良く読んでなかった.
ファイルね.
b.batで生成するのかな?
削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?
146 :デフォルトの名無しさん:2019/03/14(木) 00:37:26.49 ID:MfJOghkN
B.batは動画のエンコードに使っているバッチファイルの中身の一部で %~dpn1_hoge.txt
があった場合はツールに追加のオプションを指定するようにしている感じです.
147 :デフォルトの名無しさん:2019/03/19(火) 11:54:10.54 ID:hD2ftWP/
set day=3/19(火)
if 1==1 (
echo %day%
)
すみませんどなたか教えてください.
曜日の半角括弧のせいでif文が閉じられてしまうんだけど.
どうやってエスケープすればいいんでしょうか?
148 :デフォルトの名無しさん:2019/03/19(火) 12:02:29.16 ID:9bBZVsPM
^)
バッチ エスケープで検索すりゃすぐわかるだろ.
149 :デフォルトの名無しさん:2019/03/19(火) 12:50:21.44 ID:Juttg7oZ
括弧はpsのワンライナーでも嵌まる箇所.
150 :デフォルトの名無しさん:2019/03/19(火) 12:57:54.34 ID:dDtGuicR
>>147
こういう方法もある.
変数dayの中に, 二重引用符がなければ.
set day=3/19(火)
if 1==1 (
for /f delims^=^ eol^= %%i in ("%day%") do echo %%i
)
これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫.
151 :デフォルトの名無しさん:2019/03/19(火) 13:01:36.48 ID:dDtGuicR
echo.%%i
にしたらもっといいかも.
152 :147:2019/03/19(火) 13:11:02.99 ID:hD2ftWP/
set day=3/19(火)
if 1==1 (
echo %day:~0, 6%^)%
)
これでいけました.
>>150のも今後の参考にさせてもらいます. ありがとうございました.
153 :デフォルトの名無しさん:2019/03/19(火) 13:19:49.65 ID:dDtGuicR
最後の % は要らんぞ.
154 :デフォルトの名無しさん:2019/03/19(火) 20:28:12.65 ID:xvBmkr0d
>>147
echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある.
これだとほとんどすべての記号がそのまま出力される. 例外として「!」は「^!」で, 「%」は「%%」で, 「^」「^^」などは要エスケープ.
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set "day=3/19(火)"
if 1==1 (
echo !day!
)
155 :デフォルトの名無しさん:2019/03/19(火) 22:00:01.63 ID:dDtGuicR
! とか ^ があると.
setlocalの前に変数代入した方が楽だな.
156 :デフォルトの名無しさん:2019/03/20(水) 22:34:42.36 ID:/eguYGP5
一番厄介なのって [ ] だっけ?
157 :デフォルトの名無しさん:2019/03/21(木) 01:32:50.66 ID:3Vd/nBOR
個人的には全角スペースと()
158 :デフォルトの名無しさん:2019/03/21(木) 21:56:31.90 ID:HPyHK69o
day=off だと echo されない.
159 :デフォルトの名無しさん:2019/03/21(木) 23:03:18.28 ID:HPyHK69o
遅延モードでのエスケープの動作が面白い.
setlocal enabledelayedexpansion
set "a=^x ^^ ^!"
set "b=^x ^^ ^y"
set "c=^x ^^ ^y" !
echo a=!a!
echo b=!b!
echo c=!c!
a=x ^ !
b=^x ^^ ^y
c=x ^ y
160 :デフォルトの名無しさん:2019/04/10(水) 22:17:03.83 ID:dRPi9Fbo
コマンドプロンプトで以下のpowershellコマンドを実行すると曜日が英語で表示されるのですが,
ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか?
曜日の判定に使いたいのです.
C:\>powershell "(get-date).DayOfWeek"
Wednesday
161 :デフォルトの名無しさん:2019/04/10(水) 22:22:48.75 ID:kh6Z72O0
>>160
for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"')do
set "hoge=%%i"
162 :デフォルトの名無しさん:2019/04/10(水) 23:46:13.28 ID:dRPi9Fbo
>>161
ありがとうございます!それでバッチリでした.
ってかレスはやっ!
163 :デフォルトの名無しさん:2019/04/17(水) 14:41:43.82 ID:SVkPhkuc
読み取り専用属性付加と解除についてお願いします.
ATTRIB +R hoge.txt
この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが.
ATTRIB +R *.txt
とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます.
バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?
164 :デフォルトの名無しさん:2019/04/17(水) 15:11:44.94 ID:SVkPhkuc
>>163です.
バッチファイルにファイル名を指定してしまうと同一名のファイルしか処理できませんが.
ファイル名が異なっていてもドロップしたファイルのみ属性変更したいのです.
165 :デフォルトの名無しさん:2019/04/17(水) 15:30:16.10 ID:Tk94P2Iw
>>163
"*.txt "が邪魔.
166 :デフォルトの名無しさん:2019/04/17(水) 15:59:23.64 ID:SVkPhkuc
>>165
ATTRIB +R
これだけでいいのでしょうか.
試してみましたが一つのファイルをバッチファイルへドロップすると.
ディレクトリ内の全てのファイルが属性変更されてしまいます.
167 :デフォルトの名無しさん:2019/04/17(水) 16:34:46.90 ID:HAjihGMm
>>166
ATTRIB +R %1
引数のファイルだけ属性を変える.
引数が無い場合は全てのファイルになるので.
ガードは付けた方が良いと思う.
168 :デフォルトの名無しさん:2019/04/17(水) 17:06:43.84 ID:SVkPhkuc
>>167
%1 とすることでドロップした一つのファイルが読み取り属性変更できるようになりました.
二つとか三つとか複数ファイルはできないのですよね.
皆さんありがとうございました.
169 :デフォルトの名無しさん:2019/04/17(水) 17:54:55.66 ID:DeBFB2/b
ATTRIB +R %*
とすると複数ファイル可.
170 :デフォルトの名無しさん:2019/04/17(水) 18:03:53.01 ID:mAjziF7r
バッチファイルの図形プログラミング作ったら広告収入入ると思いますか?
171 :デフォルトの名無しさん:2019/04/17(水) 18:18:21.55 ID:QABBLuNd
俺のところじゃ>>169はエラーになる.
for %%i in (%*) do attrib +r %%i
まあファイル名によってはこれもダメだけど.
172 :デフォルトの名無しさん:2019/04/17(水) 19:24:10.99 ID:SVkPhkuc
>>169
>>171
みなさんありがとうございます.
助かりました.
173 :デフォルトの名無しさん:2019/04/17(水) 21:07:05.52 ID:3cAVwUGz
複数ファイルドロップするなら shift でループが簡単だと思うけど何か落とし穴ある?
174 :デフォルトの名無しさん:2019/04/18(木) 19:59:48.99 ID:pUSpmyse
ファイルドロップで落とし穴があるとしたら >>45 みたいな引数の時.
>>48 を参考にすると.
@echo off
set "a=%cmdcmdline:"=*%"
set "a=%a:~0, -1%" & set "e="
set "c=" & for /f "tokens=2* delims=*"
%%i in ("%a%")do set "c=%%j"
:x
set "a=" & for /f "tokens=*" %%i in
("%c%")do set "a=%%i"
if "%a:~0, 1%"=="*" (set "d=*")
else set"d= "
set "b=" & set "c="
for /f "tokens=1* delims=%d%" %%i in ("%a%")
do set"b=%%i" & set "c=%%j"
if defined b set e=%e% "%b%" & goto x
for %%i in (%e%) do attrib +r %%i
でもこれファイルドロップでしか使えない.
175 :デフォルトの名無しさん:2019/04/19(金) 16:41:41.89 ID:nzBF9sby
batのコマンドのタイトルバーに.
「管理者: 」
の表示を消すこと出来ないのでしょうか?
176 :デフォルトの名無しさん:2019/04/19(金) 17:41:11.03 ID:HG96JCXu
muiファイルいじるしかなかったような.
177 :デフォルトの名無しさん:2019/04/19(金) 18:58:50.77 ID:FmrBk+Vp
スレチと怒られそうだが.
--- change_wnd_title.uws ------
DEF_DLL SetWindowTextA(HWND, STRING):BOOL:user32.DLL
DIM old_title = PARAM_STR[0]
DIM new_title = PARAM_STR[1]
DIM idwnd = GETID(old_title)
IFB -1<idwnd THEN
SetWindowTextA(IDTOHND(idwnd), new_title)
ENDIF
---------
C:\UWSC\UWSC.exe C:\TEST\change_wnd_title.uws "管理者: test"
"ABC"
を管理者権限で実行.
「管理者:」 と「test」 の間にスペースが2つある点に注意.
べつにWin32apiが使えればほかのスクリプトでもいいが.
すでに配布が終了している(?)UWSCをすすめるのは.
とてもにコンパクトで気軽に試しやすいため.
以下のレスにあるDL先は公式リンク.
使うのはFree版でよい.
http://egg.5ch.net/test/read.cgi/software/1533818531/3
178 :デフォルトの名無しさん:2019/04/19(金) 21:14:57.50 ID:5yrPogsy
>>175
例えば d:\hoge\a.bat を実行するなら.
ショートカットの新規作成でコマンドは.
cmd /c start "ABC" /d "d:\hoge" a.bat
ショートカットのプロパティで.
実行時の大きさは「最小化」
詳細設定で「管理者として実行」
このショートカットを実行すると.
a.bat が管理者として実行されて.
タイトルは ABC のみになる.
179 :デフォルトの名無しさん:2019/04/19(金) 21:49:09.78 ID:5yrPogsy
>>178
念のため書いておくが.
バッチの中で.
title xxx
と書くと「管理者:xxx」
となるので台無し.
バッチの title コマンドは消せ.
それが出来ないなら俺は知らん.
180 :デフォルトの名無しさん:2019/04/19(金) 23:47:56.76 ID:UTkV4PFm
あのさ.
もう設計書はあるからバッチ作ってって言われて設計書見たんだが.
「%0\..\xxx\yyy.batをコールする」とか書かれてて腰折れそうなんだけど・・・.
181 :デフォルトの名無しさん:2019/04/20(土) 00:03:36.64 ID:oEi+Bse9
やりたい事が書いてあるかどうかだな.
設計書作る手間で自分でかけとも思うけど.
外注なら設計書から作りましょうねと諭して工数確保だな.
182 :デフォルトの名無しさん:2019/04/20(土) 00:08:13.21 ID:vpsjY4OY
>>181
まあやりたい事分かるからこっちで直して.
これでいいですよね?って聞くつもりだけど.
細かく書いといて間違えてるのやめてほしい・・・.
183 :デフォルトの名無しさん:2019/04/20(土) 03:49:52.33 ID:C+CxU9Uj
>>175
隠しておかないと, 悪いことしてるのがばれちゃうもんな.
184 :179:2019/04/20(土) 04:50:04.97 ID:HO8cTApa
たぶん>>121の奴だろ.
胡散臭い.
185 :デフォルトの名無しさん:2019/04/21(日) 00:17:28.92 ID:Aqd0ZKZB
forfilesは遅いこと.
フォルダのファイル数が多いと極端に遅くなる.
186 :デフォルトの名無しさん:2019/04/27(土) 20:18:12.49 ID:SEUESNkj
>>174
exit で終了しないと不味いな・・・.
187 :デフォルトの名無しさん:2019/05/07(火) 09:53:38.49 ID:3q/iti6Z
バッチとは違うけど, Microsoftさまの新しいターミナルアプリ「Windows Terminal」
https://forest.watch.impress.co.jp/docs/news/1183011.html
期待しても良いのかしら.
188 :デフォルトの名無しさん:2019/05/08(水) 22:44:07.08 ID:6yW2addd
>>187
windows10のみだと俺は使えないや.
189 :デフォルトの名無しさん:2019/05/08(水) 22:45:41.01 ID:o7I87B0d
>>188
そりゃMacやLinuxでも使えるようにする性格のアプリではないだろ.
190 :デフォルトの名無しさん:2019/05/08(水) 23:18:47.67 ID:6yW2addd
>>189
どういう意味なのかな?
俺が読んだかぎりではwindows10のみと判断したんだが.
191 :デフォルトの名無しさん:2019/05/08(水) 23:59:34.57 ID:PAJNmCOy
>>190
MacやLinuxで使えないから嫌だってお前は言ってるんだよ.
192 :デフォルトの名無しさん:2019/05/09(木) 00:09:50.10 ID:Q5GOiLDw
build 10.0.18362.0以上でVS2017必要みたいね.
Win8とかじゃ使えない.
193 :デフォルトの名無しさん:2019/05/09(木) 00:35:06.30 ID:e/QFUb7b
win7/8.1は切捨てか.
さすがMS
194 :デフォルトの名無しさん:2019/05/09(木) 00:47:39.20 ID:W7EsCFlC
>>193
サポート終了って言ってるんだから当たり前じゃね?
195 :デフォルトの名無しさん:2019/05/18(土) 02:08:44.94 ID:5JVQU2Kx
スレチかもなのですが, 「コアを吐く」ってどういう意味なのでしょうか?
196 :デフォルトの名無しさん:2019/05/18(土) 02:12:53.15 ID:ChT5ZnKi
コアダンプのことじゃね.
197 :デフォルトの名無しさん:2019/05/19(日) 00:27:10.87 ID:p20+5ZYI
Win10で, .(ドット)から始まる4文字以上のフォルダを再帰的に削除したいのですがうまくいきません.
for /d /r %%d in (.????*) do rmdir /s /q "%%d"
フォルダ名をスペースおきに書くと削除できますがワイルドカードを使って処理できないものでしょうか.
198 :デフォルトの名無しさん:2019/05/19(日) 11:10:45.58 ID:TZwQ5fCi
for /f %%d in ('dir /s /b ^| findstr \\\.....') do rmdir /s
/q "%%d"
とか?
199 :デフォルトの名無しさん:2019/05/19(日) 11:21:46.43 ID:TZwQ5fCi
>>198
dir /s /b /ad だった.
200 :デフォルトの名無しさん:2019/05/19(日) 11:40:23.60 ID:C4jenAHt
>>197
for /d /r %%i in (.*) do set "a=%%~fi" & call
:x "%%a%%"
pause & goto :eof
:x
set "b=%~nx1"
if not "%b:~4, 1%"=="" rd /s /q %1
201 :197:2019/05/19(日) 12:35:02.55 ID:p20+5ZYI
>>198-199
>>200
ありがとうございます!
rmdirをechoに置き換えて確認してみましたところ, >>200 様ではフォルダ名を取得できませんでした.
>>198-199 様で対象にしたいフォルダ名を取得できましたのでこちらを使わせていただきます.
ありがとうございました.
202 :デフォルトの名無しさん:2019/05/19(日) 13:00:03.54 ID:C4jenAHt
>>201
なにを言ってるのか意味不明だな?
>>200 の rd を echo rd に変えたのなら問題ないだろ.
>>198 を使うなら /f "delims=" にしろよ?
あと, >>198 だと \.12\abc とかも消えるぞ.
203 :デフォルトの名無しさん:2019/05/19(日) 13:23:52.91 ID:C4jenAHt
分かった.
隠し属性かよ.
204 :デフォルトの名無しさん:2019/05/20(月) 07:05:59.13 ID:/nt8UTBS
for /f "delims=" %%i in ('dir/adh/s/b .*') do (
set "a=%%~nxi" & call set "a=%%a:~4, 1%%"
if defined a if exist "%%i" rd/s/q "%%i")
205 :デフォルトの名無しさん:2019/05/26(日) 10:45:56.66 ID:nyCVecKy
7-Zipスレからこちらに誘導されてきました.
バッチファイルを実行して.
指定したフォルダを7z圧縮し別の指定した場所へ保存する方法教えてください.
206 :デフォルトの名無しさん:2019/05/26(日) 10:55:25.50 ID:QHGhwB6i
>>205
7-zipのコマンドラインオプションみましたか?
207 :デフォルトの名無しさん:2019/05/26(日) 11:03:44.74 ID:nyCVecKy
>>206
見ていません.
208 :デフォルトの名無しさん:2019/05/26(日) 11:10:19.45 ID:nyCVecKy
>>206
今見ています.
209 :デフォルトの名無しさん:2019/05/26(日) 17:24:55.92 ID:iePtiDR/
>>205
7-Zip のパスは自分の環境に合わせる.
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files (x86)\7-zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" &
cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
210 :デフォルトの名無しさん:2019/05/26(日) 18:42:28.21 ID:nyCVecKy
>>209
ありがとうございます.
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=Z:\TE=
set "i=%i:"=%"
set /p o=Z:\zz=
set "o=%o:"=%"
set /p n=a=
for %%A in ("%i%") do set "d=%%~nxA" &
cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
7-Zip のパス.
C:\Program Files\7-Zip
ZドライブTEフォルダを圧縮.
Zドライブzzフォルダに作成.
書庫名aにしてみましたが動作しませんでした.
誤った箇所ありますでしょうか.
211 :デフォルトの名無しさん:2019/05/26(日) 19:22:25.25 ID:4n4gfKEy
>>210
書き換えないといけないのは7zipのパスのところだけであとのところはいじっちゃだめ.
なので[下矢印]をメモ帳に貼り付けて適当な名前のbatファイルに保存が正解.
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set /p i=圧縮するフォルダのフルパス=
set "i=%i:"=%"
set /p o=書庫を作成するフォルダのフルパス=
set "o=%o:"=%"
set /p n=書庫名(拡張子なし)=
for %%A in ("%i%") do set "d=%%~nxA" &
cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
212 :デフォルトの名無しさん:2019/05/26(日) 19:28:03.67 ID:iePtiDR/
>>210
コンソール入力するのが嫌なら.
set i=Z:\TE
set o=Z:\zz
set n=a
213 :デフォルトの名無しさん:2019/05/26(日) 19:35:30.91 ID:nyCVecKy
>>211
>>212
これでできました.
@echo off
path C:\WINDOWS\system32;C:\WINDOWS;
path C:\Program Files\7-Zip;%path%
set i=Z:\TE
set o=Z:\zz
set n=a
for %%A in ("%i%") do set "d=%%~nxA" &
cd /d "%%~dpA"
7z a "%o%\%n%.7z" "%d%"
pause
自分のような者に教えていただきありがとうございました.
214 :デフォルトの名無しさん:2019/05/30(木) 23:24:33.44 ID:D3n586fF
CMDの画面でこういうのを入力して実行したら.
FOR /L %I IN (1, 1, 20) DO @CALL ECHO %I
画面の上のタイトルに文字が.
うじゃうじゃ出て来るのはなぜ?
215 :デフォルトの名無しさん:2019/06/01(土) 22:51:37.17 ID:cR7U/Ve2
最近の発見.
remの前に空白をおける.
: でラベルを示すが, :の前後に複数の空白, タブ, 全角空白があってもよい.
: タブ abc
またラベルの後の空白以降の文字列は無視するのでコメントを書ける.
: abc エラーの場合.
まあ, あまり使うところないけど.
216 :デフォルトの名無しさん:2019/06/02(日) 00:30:45.28 ID:0ZBCelud
最後のは割と便利そうだけど.
現場だとコメントはREM使えっていうコーディング規約に阻まれそうだ. w.
217 :デフォルトの名無しさん:2019/06/02(日) 03:07:05.57 ID:rFF/uYB6
>>214
そもそも call の引数はバッチファイル名かラベルだ.
それ以外の, 内部コマンドや外部コマンドじゃない.
そんな使い方, help のどこにも書いてない.
一見, 正常に動作している様に見えるが,
内部では子プロセスが異常終了している.
だからタイトル名に子プロセスの残骸が残る.
call set なども動作はするが邪道.
218 :デフォルトの名無しさん:2019/06/04(火) 23:08:45.76 ID:YyzuHNes
>>215
REM は「コマンド」だから前に空白が置ける. それは当然として.
ラベルをコメント代わりに使うのは止めとけ.
for や if コマンドの中で「インテンドを使って」コメントに使おうとすると弾かれる.
大人はバッチのコメントは REM で書くものだ.
Intel のドライバーインストーラーのバッチは奇麗だと思うぞ.
219 :デフォルトの名無しさん:2019/06/09(日) 19:33:03.04 ID:ESLww06V
変数のサイズの最大値って何バイトなんだろう.
@echo off
setlocal enabledelayedexpansion
set "a=x"
for /L %%i in (1, 1, 12) do set "a=!a!!a!"
set "b=x"
for /L %%i in (1, 1, 13) do set "b=!b!!b!"
if !a!==!b! (echo "a=b") else echo "a<b"
pause
結果は.
"a=b"
220 :デフォルトの名無しさん:2019/06/09(日) 20:37:25.93 ID:ESLww06V
>>219
8187 バイトかな?
半端な値だな. . .
221 :デフォルトの名無しさん:2019/06/10(月) 07:14:20.96 ID:24zpPZFc
https://www.atmarkit.co.jp/ait/articles/1510/30/news041.html
内部的には1つの変数当たり最大32767文字.
コマンドプロンプトの入力行は最大で8190文字.
システム環境変数やユーザー環境変数の最大値は約2000文字(setxコマンドでは最大1024文字)
@echo off &setlocal
set a=x
set b=x
set /a i=2
:LOOP
set a=%a%x
echo %i%
if not %a%==%b% (
set b=%a%
set /a i+=1
goto :LOOP
)
pause
速くて正確ではないけど4093くらいで落ちた.
コマンドの制限に掛かるみたいやね.
222 :デフォルトの名無しさん:2019/06/10(月) 07:46:35.61 ID:acT05/Jv
>>221
ありがとう, 参考にします.
1行当たり8190文字がネックだね.
223 :デフォルトの名無しさん:2019/06/10(月) 15:28:36.17 ID:q9TwxOtc
>>221
こういうのって統一して何バイトって決めないとやばくないのかな.
windowsバージョン, 英語, 日本語, ヒンズー語など言語で微妙に変化すると,
おかしなことがおきたり, ウィルスの侵入口に利用される.
224 :デフォルトの名無しさん:2019/06/10(月) 18:52:33.54 ID:acT05/Jv
遅延展開では変数名1文字なら値は8189文字まで. 半角全角は無関係.
変数名が1文字増えると値の最大値は1文字減る.
set "a=!b!" の様に二重引用符で囲むと最大値は2文字減る.
遅延じゃないと a=%b% 以外のコマンドラインの文字数分が更に減る.
変数 a が5000文字の場合.
if %a%==%a% echo ng は落ちるが.
if !a!==!a! echo ok は落ちない.
225 :デフォルトの名無しさん:2019/06/10(月) 18:58:22.71 ID:OlE51f/u
>>223
そもそもそんなギリギリまで使う方がおかしい.
あとウィルスとかのセキュリティの話はまた別の話.
226 :デフォルトの名無しさん:2019/06/10(月) 19:19:36.75 ID:acT05/Jv
cmdは既に穴だらけなんで.
227 :デフォルトの名無しさん:2019/06/10(月) 20:08:18.95 ID:8z0TGIdq
穴だらけなのかもしれないが, 外部に開いた穴は無いんで.
悪用されるにはその前に侵入を許してしまってる必用がある.
まあ侵入されたあとにコマンドプロンプトを使うようなウィルスはあるかは知らないけど.
228 :デフォルトの名無しさん:2019/06/11(火) 05:43:03.21 ID:mwwG6pNT
ワンラインで8kか.
フルパス200文字位のファイルを40個D&Dしたらもうパンクか.
ヘタレ過ぎる.
229 :デフォルトの名無しさん:2019/06/11(火) 16:08:50.98 ID:AKGG1UAL
初心者故説明不足でしたらご指摘ください.
調べてもわからなく, ご教示いただけないでしょうか.
やりたいこと.
Windowsアップデートのインストール一覧のうち.
2019年分のみ抽出したい.
やったこと.
一覧を取得するコマンドで情報をテキストファイルに出力.
その後findstrで2019分のみを抽出しようとしたけど.
抽出出来なかった.
実行コマンド.
Windowsアップデート一覧取得.
wmic qfe get InstalledOn, HotFixID > aaa.txt
抽出コマンド.
findstr "2019" aaa.txt
抽出コマンド実行後, 結果が帰って来ませんでした.
なぜ結果が帰って来ないのかが全くわかりません.
どうか, 対処法をご教示いただけないでしょうか.
230 :デフォルトの名無しさん:2019/06/11(火) 16:21:50.48 ID:mwwG6pNT
ユニコードだからじゃない?
type aaa.txt > aaa1.txt
aaa1.txt でやってみろ.
231 :デフォルトの名無しさん:2019/06/11(火) 16:30:25.48 ID:SBjduyI+
wmicはリダイレクトするとUTF16LEになるから.
230みたいに文字コード変換するか, パイプで.
wmic qfe get InstalledOn, HotFixID | findstr /n "2019"
232 :デフォルトの名無しさん:2019/06/11(火) 16:31:56.22 ID:SBjduyI+
あ, /n付けちゃったけどまぁいいか.
233 :デフォルトの名無しさん:2019/06/11(火) 16:53:09.70 ID:AKGG1UAL
>>230
>>231
ご教示頂きましてありがとうございます!
文字コードは盲点でした. もっと勉強します.
教えて頂いたコマンドで自身の望む結果が帰って来ました.
ありがとうございます!
234 :デフォルトの名無しさん:2019/06/13(木) 10:13:44.37 ID:P3O2UGUp
Explorerから「送る」SendTo で使うバッチの中の pushd "%~dp1" が失敗するケースて有り得る?
送るから使うって事はアクセス出来てるはずなので失敗する事はないと思うんだけど.
pushd "%~dp1"||exit とか失敗した場合の処理書いといた方が良いのかな.
235 :デフォルトの名無しさん:2019/06/13(木) 12:37:34.91 ID:qazE1A0w
>>234
パスの中に全角スペースが入っていて半角スペースが入ってない場合なんかは失敗するんじゃないかな.
236 :デフォルトの名無しさん:2019/06/13(木) 14:43:51.05 ID:rRFcU9uI
>>234
フルパスに半角スペースが無くて, それ以外の文字で区切られた場合,
区切られた位置が親フォルダだったら,
さらにその親に移動するだけで, エラーにもならない.
237 :デフォルトの名無しさん:2019/06/13(木) 14:50:46.43 ID:P3O2UGUp
>>235
その問題, 失念してた. ありがとう.
パスに半角スペースが無くて, 全角sp" ", コロン", ",
セミコロン";",ハット"^", イコール"=" の何れかが有る時だね.
半角sp有る無し関係なく引数全部""括るようにすれば良いのにまだこの問題残ってたんだね.
意図しない動作ではあるものの最初にデリミタ文字を含むフォルダの親フォルダにカレント移動して pushd 自体は成功する.
pushd が失敗する事例を知っていたら教えて欲しい.
この問題は対応面倒なのでパスに半角スペースを含めるようにして対処するよ.
238 :デフォルトの名無しさん:2019/06/13(木) 15:04:31.95 ID:rRFcU9uI
引数いくつか知らんが pushd "%~dp2" は失敗するだろ.
引数1個限定なら %2 が有れば exit するとか.
あるいは >>48 を参考に.
239 :234:2019/06/13(木) 16:36:42.36 ID:P3O2UGUp
送るから使う前提で.
pushd "%~dp1"||エラー処理.
のエラー処理を書く意味あるかな?てのが聞きたかった事なんだ.
まあおまじない的にpause&exitしとくよ. ありがとう.
240 :デフォルトの名無しさん:2019/06/13(木) 17:10:58.72 ID:rRFcU9uI
引数全部で.
if "%~dp1"=="%~dp2"
if "%~dp1"=="%~dp3"
if "%~dp1"=="%~dp4"
とか確認すりゃ問題ない.
241 :デフォルトの名無しさん:2019/06/13(木) 17:24:03.99 ID:rRFcU9uI
>>240
でもファイル名使うとダメだな.
242 :デフォルトの名無しさん:2019/06/14(金) 15:25:04.04 ID:/ScwnRxc
誰もツッコミ無しか.
SendTo とか D&D は何もしなくても自動的に.
送り側のディレクトリに移動するんだが.
243 :デフォルトの名無しさん:2019/06/14(金) 15:52:59.01 ID:/ScwnRxc
SendTo にバッチ本体じゃなくて.
ショートカットを入れたのかね.
でもプロパティの作業フォルダを空にすればいい.
怪しげな引数を利用するよりマシだろ.
244 :デフォルトの名無しさん:2019/06/15(土) 09:44:04.71 ID:wrdBniJb
7-ZIPの 7za.exe でワイルドカード使ったときにサブフォルダを除外するにはどうしたらいいでしょうか?
-r-を付けてもなぜか効かないんですが.
7za.exe a XXX.zip -r- *
245 :デフォルトの名無しさん:2019/06/15(土) 12:34:19.95 ID:/kIGVJHV
>>244
7zaは経験ないが7zと同じだろう.
引数に*としたらサブディレクトリも含む.
サブディレクトリを指定したら, それ以下の全部を含む.
そこでスイッチは関係ない.
ファイルだけ圧縮したいなら.
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist archive.7z del archive.7z
set a=
setlocal enabledelayedexpansion
for %%i in (*) do set a=!a! "%%i"
7z a archive.7z !a%!
pause
246 :デフォルトの名無しさん:2019/06/15(土) 12:36:06.42 ID:/kIGVJHV
ああ, すまん.
.zip に置き換えて.
247 :デフォルトの名無しさん:2019/06/15(土) 13:27:41.74 ID:/kIGVJHV
>>245はファイル名に!^があると誤動作するので.
@echo off
path C:\Program Files\7-Zip;C:\WINDOWS\system32;C:\WINDOWS;
if exist XXX.zip del XXX.zip
for %%i in (*) do 7za a XXX.zip "%%i"
pause
にした方がいいかもね.
ちなみにInfo-ZIPのzip.exeでは.
zip XXX.zip *
だけでいいが空のサブディレクトリを作成する.
248 :デフォルトの名無しさん:2019/06/17(月) 08:25:16.99 ID:gSWoSWwj
.commandでターミナルを開いてpython3 /hoge/test.pyを入力,
エンターを送信してpyファイルを実行したいのですがご教授ください.m(_ _)m
echo python3 /hoge/test.pyとするとターミナルに入力はされるのですが, pythonが実行されません.
ちなみに.batでは,
cd C:\hoge\
cmd /k python test.py
でpythonを実行する事ができました.
.commandで同じ事をするにはどうすればいいでしょうか?
249 :デフォルトの名無しさん:2019/06/17(月) 13:48:44.19 ID:gSWoSWwj
248です.
解決しました. m(_ _)m
echoなんか付けずに.
python3 /hoge/test.py
でpythonが実行できました. ありがとうございます.
250 :デフォルトの名無しさん:2019/06/17(月) 18:30:49.93 ID:/bUEZ7B5
バッチファイルからbeep音を出す.
echo ^G >beep.bat
^G は コントロールキーとG
beep.batを実行すると音は出るが, エラーも出るので.
type beep.bat
のほうがよい.
beep.bat 2>nul
でエラーは消えるはずだが, なぜか音も出ないことがある.
こういう基本コマンドがなぜかない.
251 :デフォルトの名無しさん:2019/06/17(月) 21:28:51.00 ID:KEFOQI4b
>>250
beep.bat
でエラーが出るのは当然.
beep.bat の中身は 「あ」 と一文字書いてあるのと同じようなものだから.
コマンドになってない.
だから.
echo ^G> beep.dat
echo type beep.txt> beep.bat
とするか.
echo @echo ^G> beep.bat
とすれば.
beep.bat実行でエラーは出ない.
ちなみに@echoとしてechoの頭に@をつける理由は.
そうしないと,
実行コマンドが表示される時点で一回音が鳴り.
echo が実行されることによって音が鳴るので.
結果として2回音が鳴ることになるため.
252 :デフォルトの名無しさん:2019/06/17(月) 22:13:21.14 ID:KEFOQI4b
無料のエディタでも制御文字を扱えるものがあるので.
そういったものを使うと便利かと思います.
たとえばNotepad++では制御文字を表示することができます.
https://www.howtonote.jp/notepadplusplus/install/index10.html
入力は編集-文字コード表から.
サクラエディタは制御文字を入力できるのに表示する方法はわかりませんでした.
(自分はユーザではなく詳しくないので実際はあるのかもしれない)
http://sakura-editor.sourceforge.net/htmlhelp/HLP000255.html
253 :デフォルトの名無しさん:2019/06/17(月) 22:46:13.03 ID:kzHmUXK8
トリッキーだが, コントロールコードを直接書かないで実現することもできるね.
ここの過去ログ%11にあったけど.
for /f "delims=0" %%I in ('cmd /u /c echo *') do
set BEL=%%I
echo %BEL%
254 :デフォルトの名無しさん:2019/06/17(月) 23:09:42.80 ID:+j+1wiRe
バッチにバイナリエディタで入力したら.
どんな値でも変数に代入出来るのかな?
255 :デフォルトの名無しさん:2019/06/17(月) 23:10:40.48 ID:KEFOQI4b
>>251
訂正.
誤:echo type beep.txt> beep.bat
正:echo type beep.dat> beep.bat
256 :デフォルトの名無しさん:2019/06/18(火) 17:34:44.10 ID:eep67jJ0
cls|choice 1>nul 2>nul
257 :デフォルトの名無しさん:2019/06/18(火) 19:33:08.53 ID:KnqBLmEX
>>251
なるほど, どっちもありですね.
echo ^G> beep.dat
echo type beep.dat> beep.bat
echo @echo ^G> beep.bat
@echo のこんな使い方は初めて見た, 知らなかったです.
258 :デフォルトの名無しさん:2019/06/23(日) 06:51:19.02 ID:dygsK1bo
Windows Terminal早速試せるみたい.
Microsoft's new Windows Terminal now available to download
for Windows10 - The
Verge
https://www.theverge.com/2019/6/22/18701365/microsoft-windows-terminal-10-download-store-features
259 :デフォルトの名無しさん:2019/06/23(日) 12:23:35.72 ID:Lc+3aX4/
>>258 そこに書いてある.
Microsoftはまた, Linux用のWindows Subsystem(WSL)の.
パフォーマンスを向上させるために,
完全なLinuxカーネルをWindows 10に搭載することに取り組んでいます.
こっちの方が気になるなあ.
260 :デフォルトの名無しさん:2019/06/23(日) 12:41:20.55 ID:8sWJbccc
WSL2でしょ.
261 :デフォルトの名無しさん:2019/06/25(火) 00:46:23.52 ID:6j3DQJ1O
Windows7からWindows10に変えたら, IME単語登録用ソフトのIMECが動かない.
神は死んだ・・・.
262 :デフォルトの名無しさん:2019/06/25(火) 19:20:48.71 ID:sBqqHKRF
chcp 65001
if "hoge"=="hoge" (
echo あああ.
echo いいい.
)
pause
上みたいなbatをUTF-8で保存して実行すると.
'o' is not recognized as an internal or external command,
と言われてエラーになるんですが何故ですか?
263 :デフォルトの名無しさん:2019/06/25(火) 19:23:12.67 ID:sBqqHKRF
echoの前に半角スペース3つです.
264 :デフォルトの名無しさん:2019/06/25(火) 19:52:58.06 ID:O4gheXA8
良く分からんが >>258 の奴でやると.
もしかしたら上手くいくかもね.
265 :デフォルトの名無しさん:2019/06/25(火) 19:58:43.79 ID:O4gheXA8
chcp 65001
if "hoge"=="hoge" (
echo あああ& rem
echo いいい.
)
pause
266 :デフォルトの名無しさん:2019/06/25(火) 20:17:53.34 ID:O4gheXA8
行末が非asciiだと不味いようだ.
267 :デフォルトの名無しさん:2019/06/25(火) 20:18:26.26 ID:sBqqHKRF
>>265
レスありがとうございます.
それだとエラーは出なくなりました.
でもなんでこんな訳のわからない動作をするのかがわかりません.
268 :デフォルトの名無しさん:2019/06/25(火) 20:34:02.78 ID:O4gheXA8
上手く動作しないという事はバグじゃないですかね.
それ以上はcmdの作者じゃないので分からん.
269 :デフォルトの名無しさん:2019/06/25(火) 20:49:18.67 ID:yTOc80/J
そもそもUTF-8保存バッチなんてまともに動くの見た事無い.
バッチはUS-AsciiかシフトJIS保存が安全. いくらchcpでコードページが動かせようとも.
270 :デフォルトの名無しさん:2019/06/25(火) 20:51:13.72 ID:yTOc80/J
"シフトJIS(932) だけ? いいえ, そんなことはありません. 例えば, EUC-JP(20932)
も可能です.
しかし,Unicode(1200), UTF-7(65000), UTF-8(65001), JIS(50220) はダメです.
なので, 実際上?は, シフトJIS(932) だけのようなものです. "
http://scripting.cocolog-nifty.com/blog/2008/12/post-38f8.html
271 :デフォルトの名無しさん:2019/06/25(火) 21:18:10.64 ID:O4gheXA8
ユニコードでしか表示できない文字を表示したいならともかく.
"あああ" とか "いいい" じゃ全く意味が無いな.
272 :デフォルトの名無しさん:2019/06/26(水) 07:19:54.19 ID:/FHvjGPn
やはりbatをUTF-8で動かすと色々不安定みたいですね.
素直にShift_JISで書くことにします.
273 :デフォルトの名無しさん:2019/06/26(水) 08:01:27.89 ID:5bijRuYR
ASCIIで書いてもええんやで?
274 :デフォルトの名無しさん:2019/06/26(水) 08:13:25.58 ID:QearoGxm
Asciiで"あああ"や"いいい"が表せるかバカ.
275 :デフォルトの名無しさん:2019/06/26(水) 14:39:32.78 ID:wh3oZ78w
シフトJISで表せない文字の例.
@echo off
chcp 65000 > nul
set a=+nddRZwDA-
chcp 932 > nul
set a1=%a:~0, 1%
set a2=%a:~1, 1%
set a3=%a:~2, 1%
echo 森%a1%外の「%a1%」
echo %a2%田百閒の「%a2%」
echo アクセント符号付きのアルファベット「%a3%」
pause > nul
276 :デフォルトの名無しさん:2019/06/26(水) 19:26:37.84 ID:jdth62TN
ハードコーディングする必要ないだろ・・・.
277 :デフォルトの名無しさん:2019/06/26(水) 20:16:33.91 ID:wh3oZ78w
ユニコードのバッチでいいなら必要ないな.
echoは行末に半角スペース付けると多分ok.
setは二重引用符で囲めばいい.
278 :デフォルトの名無しさん:2019/06/27(木) 00:26:23.36 ID:65pELY4n
会得したところで今後の人生に役に立たない, もしくは自分の仕事を受け継いだ「標準的な知識の」人間に理解できないことはしない方がいい.
一子相伝の拳法とかじゃねーんだから.
バッチスクリプトに限らず, 仕事でそういうことを意識できない奴は, 大抵, 後から見て自分自身でも読めないコードを書くものだ.
279 :デフォルトの名無しさん:2019/06/27(木) 00:27:58.62 ID:65pELY4n
このスクリプトは自分で終わり・・・.
とかいう書き捨てスクリプトなら大いにやって良いと思う.
使い終わったらちゃんと捨てとけよ.
280 :デフォルトの名無しさん:2019/06/27(木) 04:32:59.89 ID:41DSIiqO
この 低レベルに合わせる事こそ唯一の原則 みたいな風潮すごいイヤ.
こんなとこまで啓蒙しなくていいよ気持ち悪い.
281 :デフォルトの名無しさん:2019/06/27(木) 04:53:05.65 ID:6UZ42pkx
>>279 板汚し失礼した. 使わないが捨てる.
よく考えたらutf-8のバッチで変数に代入した後,
sjisのバッチに移ればいいだけだった.
utf-8のバッチは不安定だが代入だけなら大丈夫だろう.
なんで気がつかなかったんだろう.
>>280 ありがとう.
282 :279:2019/06/28(金) 00:34:45.44 ID:khpSyJhs
>>280
低レベルに合わせるわけじゃねーよ.
現代的なスクリプト言語を学んできたような人間に対して.
「バッチスクリプトだけで通じる特殊で小賢しいハック」
を読ませたり書かせたりするべきじゃない, 自分だけに留めとけ, 結局誰得になる, って話が何故分からないかな?
今日も.
「文字列にASCIIの制御コードを挟めばテスト環境でこの処理通ったんでいいでしょ」
なんつったアホンダラを叱りつけたところだ.
「そのコードが何を意味してるか分かる?」と聞いたら「空白です」だとよ. そりゃ, 制御コードは「お前のエディタでは」見えないよ.
アホか.
制御コードがテスト環境と違う実環境でどう解釈されるか分かったもんじゃないから却下した.
実際, 実環境でこっそりテストしてみたらやっぱり処理はコケた.
283 :279:2019/06/28(金) 00:39:45.58 ID:khpSyJhs
で, バッチにもイディオムがある.
「AをしたいときはBと書け」ってやつ.
そういうものは, たとえ現代的なスクリプト言語とは感覚がかけ離れていてもバッチを書くなら「嫌でも」学習せねばならない.
つまり,
・言語や環境が想定している範囲内ならやってよし. むしろやれ.
・範囲外ならやるな. やるなら自己責任で他人に迷惑を掛けない程度に.
ということ.
これはどんな言語やシステムにも言えること.
284 :279:2019/06/28(金) 00:51:59.74 ID:khpSyJhs
もっと言うと, 何かを開発するときにまず最初にやることってのが.
「この言語や環境はどこまで想定しているのかを調べる」
だったりする.
自分のやりたいことに沿ってくれるかくれないのか.
くれないなら処理の一部だけやらせるに留めるなり, 最初から使わないなり, そういう選択をする.
言語や環境に縛りがある場合なら, 責任者の言質を取るなり, 書面で誓約を取ってから作る.
見ず知らずの他人が意味も訳も分からないトリッキーなコードをメンテさせられて苦しむのを想像できないならいくらでもトリッキーにやればいい.
「このコード書いた奴, 死ねばいいのに」って言われても俺には関係ない, くらいの根性腐った奴ならそうすればいい.
285 :デフォルトの名無しさん:2019/06/28(金) 04:47:52.79 ID:+wrrcV+u
だからキモイって.
創価学会員並みにキモイ.
狂信者の啓蒙活動と同じ.
こんなところではなくおまえの会社でやってろ.
286 :デフォルトの名無しさん:2019/06/28(金) 07:00:46.98 ID:n6DQpX/4
しかしWin環境はテキストのBOMマーク推奨なのに, for /fで読み出しするとBOMをわざわざ表示するのバカだよな.
過去の検討不足がまんま固定してる.
287 :デフォルトの名無しさん:2019/06/28(金) 07:22:18.87 ID:utv5/5Cv
面倒くさい奴が一人いるな.
何を書こうが勝手だが, ここはお前の職場じゃないぞ.
288 :デフォルトの名無しさん:2019/06/28(金) 07:41:24.76 ID:utv5/5Cv
>>286
BOM付きのファイルは一行目を空行にしている.
バッチに限らず後で色々トラブルあるから.
289 :デフォルトの名無しさん:2019/06/28(金) 23:56:34.27 ID:b/1HFBuK
>>284
> 「この言語や環境はどこまで想定しているのかを調べる」
それはかなり大変なので, 2, 3回やってもうまくいかなかったら別の言語に乗り換えるという便法が別の解決策.
290 :デフォルトの名無しさん:2019/06/29(土) 01:27:00.86 ID:LLveF6E3
だから何?
291 :デフォルトの名無しさん:2019/07/04(木) 08:37:48.34 ID:yoyjVAJo
Win10 v1903
メモ帳で新規作成したテキストがtypeで化ける.
もはやSJISは既定値ではない.
cmdは旧態依然.
292 :デフォルトの名無しさん:2019/07/04(木) 17:34:32.60 ID:9mSpzETW
まあ chcpすりゃいいだけだし.
293 :デフォルトの名無しさん:2019/07/04(木) 18:30:22.69 ID:wRHHZz1p
日本語レイアウトが崩れるからだめ.
294 :デフォルトの名無しさん:2019/07/04(木) 21:43:07.98 ID:y34WtIiv
以前は実行中のバッチファイルを編集保存, 行を追加したり減らしたり, すると.
エラーになってたと思うんだけど, 何かエラーにならなくなった?
Windows10 1903 からの変更?
たまたまなのかな?
295 :デフォルトの名無しさん:2019/07/04(木) 21:57:41.98 ID:y34WtIiv
>>294 自己レスです.
すいません, 気のせいでした, たまたま起きないように見えただけで.
普通にエラーが起きました.
296 :デフォルトの名無しさん:2019/07/05(金) 00:07:51.66 ID:BL7Y7b8G
実行中の行やその直後の行を追加したり削ったりすれば,
同じ処理が繰り返しになったり, 必要な処理がスキップされる形になって.
挙動がおかしくなるな.
297 :デフォルトの名無しさん:2019/07/05(金) 20:30:36.68 ID:Osj0+Img
バッチファイルスクリプトって働き方改革になるの?
298 :デフォルトの名無しさん:2019/07/05(金) 21:19:11.24 ID:zBRgAgd8
Powershellが10年経って育った今からバッチを学ぶ意義は薄い.
299 :デフォルトの名無しさん:2019/07/06(土) 08:00:17.95 ID:NPkITZNc
>>296
全部メモリーに読み込んでしまうとかファイルロック掛けるとかすれば良いのにね.
300 :デフォルトの名無しさん:2019/07/06(土) 08:01:28.83 ID:NPkITZNc
>>298
PowerShellは色々トリッキーなところあるからなぁ.
もう少し普通のスクリプト言語で良かったのに・・・.
301 :デフォルトの名無しさん:2019/07/06(土) 10:23:31.70 ID:OJAqpfME
>>299
インタープリターではなくなる.
302 :デフォルトの名無しさん:2019/07/06(土) 10:31:09.33 ID:SnF6bIfm
働き方改革?
303 :デフォルトの名無しさん:2019/07/06(土) 10:53:24.31 ID:NPkITZNc
>>301
意味わからん・・・.
304 :デフォルトの名無しさん:2019/07/06(土) 10:59:51.87 ID:OJAqpfME
>>303
そもインタープリターは行単位でのみ読み込み解釈実行する仕様.
行内容を変えても反映されないんじゃインタープリターにならない.
305 :デフォルトの名無しさん:2019/07/06(土) 11:04:50.99 ID:NPkITZNc
>>304
> そもインタープリターは行単位でのみ読み込み解釈実行する仕様.
逐次解釈は別にメモリーからでもいいだろ.
> 行内容を変えても反映されないんじゃインタープリターにならない.
そもそも行内容変えたらおかしくなるって話なんだが. w.
306 :デフォルトの名無しさん:2019/07/06(土) 11:12:26.69 ID:OJAqpfME
>>305
1の行の処理が終わってから2の行を読み込み解釈するのがインタープリター.
メモリ先に読み込んだんじゃ意味ないの.
行内容変えてバグ混入させてバグったなら仕様通り.
307 :デフォルトの名無しさん:2019/07/06(土) 11:45:00.41 ID:ddaI9LPq
ディスクキャッシュなしだとクッソ遅いんだよな.
308 :デフォルトの名無しさん:2019/07/06(土) 11:54:17.26 ID:NPkITZNc
>>306
読み込み元がファイルかメモリーかなんて関係ないだろ.
昔のBASICはインタープリターじゃねーのかよ. w.
> 行内容変えてバグ混入させてバグったなら仕様通り.
バカすぎる・・・.
309 :デフォルトの名無しさん:2019/07/06(土) 12:11:18.65 ID:OJAqpfME
本来の仕様・特性を理解しておらず.
メモリに全部読み込んでファイルロックかけちゃえばとか.
どっちがアホなんだか.
>>296 のようなことをしなければいいだけ.
310 :デフォルトの名無しさん:2019/07/06(土) 12:13:38.81 ID:NPkITZNc
> メモリに全部読み込んでファイルロックかけちゃえばとか.
日本語の理解力もないのかよ・・・.
311 :デフォルトの名無しさん:2019/07/06(土) 12:20:37.36 ID:OJAqpfME
仕様通りの動作に「仕様を変えるべきだ」というなら「どうぞ, 自分で制作しておやりなさい」としか.
ディスク上のプロフラムファイルを処理しろと指示しておいて, 実行中にプログラムファイル弄る方がバカでしょ?
312 :デフォルトの名無しさん:2019/07/06(土) 12:45:33.27 ID:SnF6bIfm
横から失礼します.
例えば, バッチじゃないけど,
中間コード生成するのは,
インタプリタじゃないの?
313 :デフォルトの名無しさん:2019/07/06(土) 12:53:22.08 ID:NPkITZNc
> ディスク上のプロフラムファイルを処理しろと指示しておいて, 実行中にプログラムファイル弄る方がバカでしょ?
うんうん,
> 行内容を変えても反映されないんじゃインタープリターにならない.
とか言ってたバカに言ってやれよ. ww.
314 :デフォルトの名無しさん:2019/07/06(土) 13:25:39.62 ID:OJAqpfME
>>313
絶望的に頭悪いな.
行内容を変えても反映されないんじゃインタープリターにならない.
未実行の行内容をにバグ混入させればバグるのは仕様通り. インタープリタだから.
>>299だと行内容変えても帰る前の動作を続けるかファイルが変えられなくなる.
315 :デフォルトの名無しさん:2019/07/06(土) 13:31:06.82 ID:NPkITZNc
> 実行中にプログラムファイル弄る方がバカでしょ?
なのに内容変えたら反映しろとか頭おかしい. w.
もう自分が何を指摘されてるかもわかってないんだろうな.
316 :デフォルトの名無しさん:2019/07/06(土) 14:13:50.98 ID:OJAqpfME
動作がバグらないように行内容をいじる方法もあるからなー.
バカには気づけないのかもな.
317 :デフォルトの名無しさん:2019/07/06(土) 14:26:59.31 ID:NPkITZNc
しれっと話し変えててウケる~. w.
318 :デフォルトの名無しさん:2019/07/06(土) 14:27:43.94 ID:ZOT0kh7c
title Win8.1のcmdはPowershellを呼び出すとタイトルが変わってしまう.
timeout 5
powershell sleep 5
Powershellを呼び出してもタイトルが変化しない方法ありませんか?
319 :デフォルトの名無しさん:2019/07/06(土) 15:18:42.27 ID:Mj6xLmMK
なんか色々とっちらかってるけど.
入力に対して逐次実行を行い内容を出力するための実行エンジンがインタプリタ.
まとめて実行する方法がバッチ.
バッチを書くための言語の種類がスクリプト.
なのでインタプリタ上で動くスクリプトで記述されたバッチが多いのは事実だけど.
バッチスクリプトだからって必ずしもインタプリタ上で動作するわけではない.
あまり言われることはないけどC言語なんかも手順をまとめて記述するという.
意味ではバッチ.
そのバッチを効率よく動かすためにハードウェアにネイティブなコードなどに.
変換するのがコンパイラ.
なので>>312が言うような中間コードを生成するのは処理的にはバッチのコンパイル.
C#がやJAVAが典型的だけどバッチとして書かれたスクリプトをコンパイラで.
中間コードに変換して.netエンジンとかJAVAエンジンで動かすけど, これらの.
エンジンはインタプリタとして作成されているので直接コマンドを逐次実行する.
ことも出来るようになっている.
インタプリタが何を持って逐次実行の基準にしている(一般的にテキスト入力な.
インタプリタはキャリッジリターンだけど)かはインタプリタの実装しだいなので,
バッチの内容がバッチ実行中に書き換わった際に動作が変わる/変わらないって.
いうのは実行エンジンがインタプリタであるとかないとか言うのと関係ない.
Linuxのシェルスクリプトはshっていうインタプリタで動いてるけど, バッチ.
スクリプトは「'(バッククォート)」で囲まれた文字列はコマンドとして実行でき,
文字列は動的に書き換えできるのでバッチファイルを書き換えながらインタプリタで.
実行できるバッチスクリプトって言うものも存在する.
逆にC#みたいな中間コードを実行するインタプリタシステムは一般的にまとめて.
コードを読み込んで実行するので, 実行中にファイルを書き換えても読み込まれた.
コードが変わるわけではないのでそのまま実行できる.
320 :デフォルトの名無しさん:2019/07/06(土) 15:32:56.64 ID:Es9FYwgG
バカの長文ウザい.
321 :デフォルトの名無しさん:2019/07/06(土) 16:47:17.04 ID:edODQM35
理解できないときの一行レス乙.
322 :デフォルトの名無しさん:2019/07/06(土) 17:04:06.81 ID:l+THgL+v
>>321
多分, その通り.
>>320は, 自分以外みんなバカというセンスのかたなのでしょう.
(320著『自分以外みんなバカ』)
323 :312:2019/07/06(土) 17:45:47.25 ID:SnF6bIfm
>>319
レスありがとうございました.
324 :デフォルトの名無しさん:2019/07/06(土) 18:13:58.11 ID:yCp3HJnn
>>321-322
そりゃ,
> あまり言われることはないけどC言語なんかも手順をまとめて記述するという意味ではバッチ.
みたいなアホなことを言う奴を理解しろと言われてもなぁ. w.
325 :デフォルトの名無しさん:2019/07/06(土) 18:30:06.42 ID:edODQM35
アホとバカは意味がちゃうで.
326 :デフォルトの名無しさん:2019/07/07(日) 00:42:47.20 ID:YVv/+K6C
貴重なメモリをバッチなんかに使われたくない.
ましてやファイルハンドル or FCBを消費するなんて考えたくもない.
327 :デフォルトの名無しさん:2019/07/07(日) 17:57:51.72 ID:sK6+FwWI
書いたスクリプトをそのままCMD画面に貼り付けて実行できるのが素晴らしすぎる.
これもインタープリタゆえのメリット.
328 :デフォルトの名無しさん:2019/07/17(水) 22:50:53.76 ID:2IS3Ei7C
指定したURLをIEで開くバッチファイルを作りたいのですが, 以下のいずれの書き方でもうまく起動しませんでした.
どのように記述すれば良いのでしょうか?
start "" """C:\Program Files\internet
explorer\iexplore.exe""https://www.yahoo.co.jp/"
start "" "'C:\Program Files\internet
explorer\iexplore.exe'https://www.yahoo.co.jp/"
start 'C:\Program Files\internet explorer\iexplore.exe'
https://www.yahoo.co.jp/
cmd /c start "" """C:\Program Files\internet
explorer\iexplore.exe""https://www.yahoo.co.jp/"
cmd /c start "" "'C:\Program Files\internet
explorer\iexplore.exe'https://www.yahoo.co.jp/"
cmd /c start 'C:\Program Files\internet explorer\iexplore.exe'
https://www.yahoo.co.jp/
329 :デフォルトの名無しさん:2019/07/17(水) 22:52:08.85 ID:2IS3Ei7C
[上矢印]書き忘れましたが, IEを起動したらバッチファイル自体はすぐに終了して欲しいです.
330 :デフォルトの名無しさん:2019/07/17(水) 22:58:10.74 ID:t7LU6uHU
これで普通に開けたけど.
start "" "C:\Program Files\internet
explorer\iexplore.exe""https://www.yahoo.co.jp/"
exit
331 :デフォルトの名無しさん:2019/07/17(水) 23:41:41.05 ID:2IS3Ei7C
>>330
助かりました. ありがとうございます><
332 :デフォルトの名無しさん:2019/07/22(月) 20:50:29.11 ID:64jFVFKi
質問です.
chcp を設定後に日本語テキストファイルを type しても.
なぜか数行ごとに部分的に文字化けします.
正しく表示させる方法はありますか.
ファイルをコード変換するしかないでしょうか.
20932 (EUC-JP)
50220 (JIS)
65000 (UTF-7)
65001 (UTF-8)
333 :デフォルトの名無しさん:2019/07/23(火) 00:29:27.63 ID:NmYCCAI2
正常に表示できる部分もあるのか?
コマンドプロンプトのフォント設定はレジストリをいじればできるようだが.
chcp したとしても.
各コードに合わせた日本語フォントがないと思う.
ファイルをコード変換には nkf などを利用すればよい.
もちろんcp932に変換できない文字がありえる点には注意.
334 :デフォルトの名無しさん:2019/07/23(火) 01:19:58.32 ID:dqAnc0cb
横から失礼. 多分フォントの問題じゃないなあ. 再現してみる.
@echo off
del a.txt
set "a=ああああああああああああああああああああああああああああああああああ"
chcp 65001
for /l %%i in (1, 1, 10) do echo %a% >> a.txt
start notepad a.txt
type a.txt
pause
goto :eof
335 :デフォルトの名無しさん:2019/07/23(火) 13:00:19.24 ID:dqAnc0cb
>>332 typeの代替えバッチ.
@echo off & set /a b=1
for /f "delims=:" %%i in ('type "%~1" ^|
findstr /n/r /c:"^$"') do call :x %%i
set /a a%b%=0, b=1, c=1
for /f delims^=^ eol^= %%i in ('type "%~1"') do call
:y &echo.%%i
goto :eof
:x
set /a a%b%=%1, b-=-1 & exit /b
:y
set /a d=a%b%
set /a c-=-1 & if %c%==%d% echo.& set /a b-=-1 &
goto y
動作文字コードは>>332の4種類とcp932とBOM付UTF-16LE
内部コマンドのtypeの文字化けの原因は不明.
得体の知れないバッチが嫌ならnkfでどうぞ.
336 :332:2019/07/23(火) 19:39:52.27 ID:3qcsVE62
みなさんレスありがとうございました.
>>335 のバッチを実行したら正しく表示されました.
なにか不具合があれば nkf で変換します.
337 :デフォルトの名無しさん:2019/08/05(月) 14:25:26.72 ID:KhkfuoHG
@ECHO OFF
FOR /L %%I IN (1, 1, 3) DO (
:ラベルの次に空行だと死ぬようだ.
ECHO %%I
)
PAUSE
338 :デフォルトの名無しさん:2019/08/05(月) 23:40:50.69 ID:uv4O1i4q
>>337
FOR コマンドの中に単純にラベルを入れるとそうなる.
諦めろ. そういう腐った仕様だ.
339 :デフォルトの名無しさん:2019/08/09(金) 07:12:05.83 ID:e+IGCa9q
MSはpowershell作っといてcmdも生殺しのまま.
340 :デフォルトの名無しさん:2019/08/09(金) 07:24:42.21 ID:i8+nUA9v
後方互換レガシー用だから.
341 :デフォルトの名無しさん:2019/08/10(土) 16:26:14.51 ID:O+qo9jJ2
・ループはなるべくラベルgotoで作る.
・処理はまとめてCALLで呼び出す.
と変な仕様に悩まされなくて済む.
342 :デフォルトの名無しさん:2019/08/12(月) 01:15:40.10 ID:qDWW1IB8
>>341
つーか >>337 は FOR コマンドの中に「REM コマンドの代わりとして」ラベルを入れたっぽいよね.
REM コマンドは確かにダサい. クソみたいにダサい.
が, 完全な代替手段はないことが今日までの先人たちの研究で分かっている.
「**な場合正しく動かない」というケースから逃れられない.
素直に REM しとけ, って話なのさ.
343 :デフォルトの名無しさん:2019/08/12(月) 01:43:33.99 ID:asx4qCxc
>>341
そうですね.
バッチ作成30年の知恵.
バッチ前言語というのをつくり, バッチに変換するツールがあるといいのに.
344 :デフォルトの名無しさん:2019/08/14(水) 08:17:57.87 ID:2+7gdzMY
なぜエラー?
@echo off
for /l %%i in (1, 1, 3) do (^
echo %%i
)
pause
345 :デフォルトの名無しさん:2019/08/14(水) 12:07:08.56 ID:tEu06J9P
空白行があるのがまずいのです.
346 :デフォルトの名無しさん:2019/08/15(木) 07:26:44.38 ID:mKbuBo/x
echo onで見るとechoが消えてる.
for /L %i in (1 1 3) do (%i)
347 :デフォルトの名無しさん:2019/08/15(木) 07:36:02.85 ID:mKbuBo/x
今, 気付いたけど.
for/Lのカウントの区切り文字は半角スペースでもいいんだな.
348 :デフォルトの名無しさん:2019/08/15(木) 12:44:36.23 ID:ALsBqyPd
なんで"("のあとでエスケープしてるんだ?
349 :デフォルトの名無しさん:2019/08/15(木) 18:55:50.85 ID:8DKeAJZl
>>348
エスケープすると長い記述を改行分割できる.
下記なら動くのではと想像.
@echo off
for /l %%i in (1, 1, 3) do (^
^
echo %%i
)
pause
350 :デフォルトの名無しさん:2019/08/15(木) 18:58:32.85 ID:8DKeAJZl
こうかも.
違いはechoの前の半角スペースの有無.
@echo off
for /l %%i in (1, 1, 3) do (^
^
echo %%i
)
pause
351 :デフォルトの名無しさん:2019/08/15(木) 20:14:09.75 ID:bAdklReO
>>350
横からだが, だとしても "(" の直後には不要でしょう.
わざわざ地雷踏みにいってるとしか思えない.
352 :デフォルトの名無しさん:2019/08/15(木) 20:20:13.66 ID:hL4sD0l+
>>349
そういうことじゃなく,
そんなところにエスケープさえしなければ動く, ということ.
空改行があっても同じ.
@echo off
for /l %%i in (1, 1, 3) do (
echo %%i
)
pause
そもそも, エスケープが必要なのは以下のような書き方の場合.
@echo off
for /l %%i in (1, 1, 3) ^
do (
echo %%i
)
pause
353 :デフォルトの名無しさん:2019/08/16(金) 13:12:21.88 ID:nbkgz595
元々^が要らんのは分かるが.
何で2行下のechoが消えるんだ?
354 :デフォルトの名無しさん:2019/08/16(金) 19:53:07.91 ID:tgbth6lv
何が正解か良く分からないけど「echo」が消えているのではなく.
「echo %%i」が実行された結果「%i」って文字列が出力されて.
いるんじゃないかな.
355 :デフォルトの名無しさん:2019/08/17(土) 03:04:11.02 ID:loMKkBUO
うん, メッセージを出したかったら,
echo [メッセ-ジ文]
だよね.
356 :デフォルトの名無しさん:2019/08/17(土) 07:25:02.72 ID:u1p0gnkJ
>>346を見ろ.
357 :332:2019/08/17(土) 18:15:26.70 ID:etNorZr1
はろー.
@echo off
(^
rem echo Hello, World!)
pause
358 :デフォルトの名無しさん:2019/08/17(土) 21:41:43.17 ID:nWccZbx0
>>357
cmd のパーサーが馬鹿なだけ.
そういうトリッキーな小賢しい書き方を探しても誰も幸せになれない.
359 :デフォルトの名無しさん:2019/08/17(土) 23:29:25.24 ID:u1p0gnkJ
>>357
そういうのはもういいから.
360 :デフォルトの名無しさん:2019/08/20(火) 20:01:18.85 ID:S2+8M2EA
C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache
にIEのキャッシュファイルがあって, コマンドで削除したいのですが.
del /f /q C:\Users\hogehoge\AppData\Local\Microsoft\Windows\InetCache\*
を管理者権限のコマンドプロンプトで実行しても消えてくれません.
どうすれば消せるのでしょうか?
環境はWin10です.
ちなみに上記の「del /f /q」を「dir」に変えて実行すると, 何もファイルが表示されませんでした.
エクスプローラでは表示されるのに・・・.
361 :デフォルトの名無しさん:2019/08/20(火) 20:06:19.31 ID:WpfDQiIq
まずは対象ファイルの属性を確認かな.
362 :デフォルトの名無しさん:2019/08/20(火) 20:39:45.13 ID:WpfDQiIq
ここに詳しく書いてある.
https://freesoft.tvbok.com/web/ie/ie11ie10webcache.html
363 :デフォルトの名無しさん:2019/08/30(金) 17:07:15.01 ID:C82bQLaF
任意のテキストファイルの各行(1~N)を,
変数のARRAY[1~N]にそのまま代入できますか?
テキストは空行あり, 文字化けは無しで.
364 :デフォルトの名無しさん:2019/08/30(金) 18:13:13.64 ID:C82bQLaF
すみません.
N行は指定じゃなくて全行です.
365 :デフォルトの名無しさん:2019/08/30(金) 19:43:28.54 ID:hATE1ff9
>>363 確認の表示が不要なら消してくれ.
@echo off & set /A N=0 & if "%~1"==":GETS"goto
GETS
for /F "delims=" %%I in ('call "%~0" ":GETS""%~1"')
do (
set /A N+=1 & set %%I)
setlocal enabledelayedexpansion
for /L %%I in (1, 1, %N%) do echo ARRAY[%%I]=!ARRAY[%%I]!
goto :eof
:GETS
set o="tokens=* delims=0123456789"
for /F %o% %%I in ('findstr /N "^" "%~2"')
do (
set /A N+=1 & set s=%%I
setlocal enabledelayedexpansion
echo ARRAY[!N!]=!s:~1!
endlocal)
366 :デフォルトの名無しさん:2019/08/30(金) 20:46:06.08 ID:C82bQLaF
>>365
ありがとうございました.
シフトJISで動作しました.
367 :デフォルトの名無しさん:2019/08/31(土) 00:24:30.62 ID:dLbvCDhA
発見.
call は遅い.
自バッチ内であっても繰り返しの中では使わないほうがよい.
368 :デフォルトの名無しさん:2019/08/31(土) 02:06:06.88 ID:KhyCGx+x
それは分かる.
何かいい方法が有ったら書いてくれ.
369 :デフォルトの名無しさん:2019/08/31(土) 07:34:22.10 ID:KhyCGx+x
ループの中では, call setも遅いな.
call先はバッチが基本なので.
%path%のフォルダ内にset.batが存在しないか.
ループの中で毎回, 無駄に検索して時間のロスに.
370 :デフォルトの名無しさん:2019/08/31(土) 13:05:56.96 ID:4qIvp+ND
フルパスか相対パスで書けばいいのに.
371 :デフォルトの名無しさん:2019/08/31(土) 15:06:36.69 ID:ny+pXiR9
クリーンに再実装しようとしてもうまく行かないし, Windows Terminalのオプソ化に期待.
372 :デフォルトの名無しさん:2019/08/31(土) 21:47:05.78 ID:KhyCGx+x
内部コマンドsetにフルパス?
373 :デフォルトの名無しさん:2019/09/17(火) 21:00:42.57 ID:Syn6UaDZ
ポータブルデバイスにフォルダ移動したいのですがどのコマンドを使えばよろしいのでしょうか?
宜しくお願いします.
374 :デフォルトの名無しさん:2019/09/18(水) 07:27:23.31 ID:zCU+H1xg
robocopy
375 :デフォルトの名無しさん:2019/09/18(水) 22:10:15.94 ID:zS9nLp3S
>>374
回答ありがとございます.
試してみましたがうまくいきませんでした.
376 :デフォルトの名無しさん:2019/09/19(木) 17:48:14.75 ID:W0BHkkEI
そのポータブルデバイスとやらのスレで聞け.
377 :デフォルトの名無しさん:2019/09/19(木) 19:33:15.60 ID:UaiZGsoz
>>373
MTP接続しているデバイスにbatでフォルダ移動したいということ?
378 :デフォルトの名無しさん:2019/09/19(木) 21:49:07.77 ID:oZTJ7ty8
>>377
MTP接続しているデバイスの端末(スマホ)のフォルダをCドライブにコピーしたいのです.
何度もありがとございます.
379 :デフォルトの名無しさん:2019/09/20(金) 18:54:32.90 ID:YblgUZDU
>>378
MTPにWindowsからアクセスする場合にはWDP (Windows Portable Device)という.
仕組みを使ってアクセスする必要があるらしいのでPowerShellとかVBSみたいな.
COMオブジェクトに対応しているスクリプト言語を使うかプログラミングしないと.
無理みたいだけど.
380 :デフォルトの名無しさん:2019/09/20(金) 20:53:45.43 ID:C2+cwByF
>>379
なるほどコマンドだけでは出来ないのですね. ありがとうございました.
381 :デフォルトの名無しさん:2019/09/20(金) 21:22:16.17 ID:CafmkPOq
mtpじゃなくftp使えばいいんじゃない.
382 :デフォルトの名無しさん:2019/09/20(金) 23:15:32.97 ID:Va/jwPXC
スレチだけど, 横から失礼.
今USBで繋いだスマホのファイルをPCのexplorerで見てたら,
どうしても表示されないファイルが一部あるんだよ.
表示を更新してもダメだ. 何なんだろ, これ.
スマホ側でzipに圧縮したら転送できたんだが.
383 :デフォルトの名無しさん:2019/09/21(土) 09:52:34.32 ID:obXFPJy6
>>382
MTPは本来画像とか音声とか映像ファイルを共有するための規格なんだけど.
それでは不便なので実装者が拡張して他のファイルも見えるようにしているらしい.
でWindowsのexplorerで削除できないファイルってのは何種類かあるけど表示.
できないってのは覚えがないのでスマホ側の実装の問題じゃないかな.
384 :デフォルトの名無しさん:2019/09/21(土) 11:24:33.96 ID:aqL81KxG
>>383
スマホのandroidがおかしいのかも.
explorerでコピペしたら.
全数処理できてるか要確認ですね.
385 :デフォルトの名無しさん:2019/09/21(土) 12:19:59.86 ID:Zmbs8cMB
>>382
メディアストレージのDBが壊れてるか更新されてないだけでは?
386 :デフォルトの名無しさん:2019/09/21(土) 12:39:19.92 ID:aqL81KxG
>>385
zip圧縮後, 繋ぎ直したらzipは表示されたが元ファイルは非表示,
なので更新というより壊れてたみたいね.
387 :デフォルトの名無しさん:2019/09/21(土) 23:40:04.00 ID:bVn3Z6J/
>>378
Android Debug Bridge(adb)を使用してはどうでしょうか?
https://developer.android.com/studio/command-line/adb.html?hl=ja#copyfiles
例)adb pull remote local
ただしワイルドカードが使用できないので工夫が必要かも.
388 :デフォルトの名無しさん:2019/09/22(日) 06:16:16.89 ID:9I7oEjtC
そもそもAndroidなのか?
389 :デフォルトの名無しさん:2019/09/23(月) 04:39:39.37 ID:LINEF6Ks
>>387
adbを使用したらうまくいきました.
ありがとうございました.
390 :デフォルトの名無しさん:2019/10/01(火) 22:20:01.40 ID:vtcCH4Ws
vbsスクリプト使用者に対話型でURLを入力させようと思い.
inputboxを使用していましたが254文字以降は切り捨てられるようで.
切り捨てられた場合にcmdを呼んでコマンドプロンプトで.
TYPE CONで入力させ標準出力からとろうと思いました.
コマンドプロンプトから.
TYPE CON
で文字入力していくと510文字しか打てません.
COPY CON
で文字入力していく場合も510文字しか打てません.
ただこちらは改行して2回目以降の文字入力は254文字までしか打てません.
コマンドプロンプトはwindowsの仕様だともっと入力できたはずだと思うんですけど.
TYPE COPYコマンドが原因なのでしょうか?
上限が512-2 256-2なのが気になります.
391 :デフォルトの名無しさん:2019/10/01(火) 22:57:55.77 ID:co/wCjS7
>>390
set /p var
で入力すると1023文字入力できるみたい.
392 :デフォルトの名無しさん:2019/10/01(火) 23:08:42.31 ID:vtcCH4Ws
>>391
ありがとうございます.
環境変数に突っ込んでそっちからとる案ってことですね.
393 :デフォルトの名無しさん:2019/10/01(火) 23:19:31.66 ID:co/wCjS7
標準出力がいいなら.
echo %var%
を最後に付けとけばうまくいかないかな?
394 :デフォルトの名無しさん:2019/10/01(火) 23:41:17.62 ID:vtcCH4Ws
いえVBSで環境変数からでも取れるんでどちらでもいいんですが.
この方法は毎回ファイル書き込みはいるのなら避けたいですね.
395 :デフォルトの名無しさん:2019/10/03(木) 06:03:26.81 ID:qiM7wE73
>>390
findstr ^^
ではどうですか?
入力の最後は改行とCtrl+Z
8000文字は入ったが, それ以上は試していない.
396 :デフォルトの名無しさん:2019/10/03(木) 19:45:19.23 ID:+nOn2TPH
>>395
ありがとうございます. たしかにfindstr ^^ 試すと長く入力できますね.
ただスクリプトが動く動きません(type con copy con以外)
たぶんexecで標準入出力を横取りしてるからなのかなと思ったんですけどならtype conはなぜ動くのかという気もします.
//Prompt.vbs
Function Prompt(Text, Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("cmd /c title " & Replace(Replace(Text,vbCr,
""),
vbLf, "") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo", "")
397 :デフォルトの名無しさん:2019/10/03(木) 20:43:23.90 ID:jymbX9V4
cmdじゃないけど.
powershell -Command $a=read-host; write-host $a
とかどうよ.
398 :デフォルトの名無しさん:2019/10/03(木) 21:20:07.70 ID:+nOn2TPH
powershellもちょっと試してたんですけどこっちもキーボード入力がはいってるように見えないです.
powershellはcommand移行の注釈がいまいちわからなくてそれが原因なのかなとも思ったんですけど.
(""の場合は前に&をつけるとかどうとか)
Function Prompt(Text, Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " &
Replace(Replace(Text,vbCr, ""),
vbLf, "") & " && type con")
'Set oExec = WshShell.exec("cmd /c findstr ^^")
Set oExec = WshShell.exec("powershell -NoExit -NoLogo
-NoProfile
-ExecutionPolicyRemoteSigned -Command $a=read-host; write-host
$a")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo", "")
399 :デフォルトの名無しさん:2019/10/04(金) 05:33:06.84 ID:igWxDR2f
>>398
いまいちVB.NETがどういう環境で使えるのか分からないし.
PowerShellの実行を許可してない環境でも動くのかも分からないが.
VB.NETのinputboxには256文字の入力制限が無い模様.
Function Prompt(Text, Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("powershell -NoProfile -ExecutionPolicyUnrestricted
-C add-type -AssemblyName microsoft.VisualBasic;
[Microsoft.VisualBasic.Interaction]::InputBox('URLを入力してください','URL入力');")
Prompt = oExec.stdout.ReadLine()
End Function
'msgbox Prompt("test dayo", "")
WScript.Echo Prompt("test dayo", "")
400 :デフォルトの名無しさん:2019/10/04(金) 06:57:13.54 ID:2Xve1BBy
>>396
良く分からんが, こんなのでどうですかね?
-------foo.bat
@findstr ^^ < con
-------Prompt.vbs
Function Prompt(Text, Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.exec("foo.bat")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox Prompt("test dayo", "")
401 :デフォルトの名無しさん:2019/10/04(金) 08:44:14.07 ID:2Xve1BBy
バッチ不要だな.
Set oExec = WshShell.exec("cmd /c findstr /R . < con")
最後に1023文字しか表示されないなReadLineのせいか?
402 :デフォルトの名無しさん:2019/10/04(金) 12:18:00.19 ID:mgLzdBVB
ありがとうございます.
Function Prompt(Text, Default)
WScript.Echo(Text)
Set WshShell = CreateObject("WScript.Shell")
'Set oExec = WshShell.exec("cmd /c title " &
Replace(Replace(Text,vbCr, ""),
vbLf, "") & " && type con")
Set oExec = WshShell.exec("cmd /c cmd /c findstr /R .
< con")
Prompt = oExec.stdout.ReadLine()
oExec.terminate
End Function
msgbox LEN(Prompt("test dayo", ""))
でやると8190でるのでmsgboxの表示制限っぽいです.
上限が512から8190まで増えました.
403 :デフォルトの名無しさん:2019/10/04(金) 12:44:51.20 ID:2Xve1BBy
それは良かった.
ところで cmd /c cmd /c と2重になってるのは何か意味が?
404 :デフォルトの名無しさん:2019/10/04(金) 12:49:02.43 ID:mgLzdBVB
単なるミスです. w.
405 :デフォルトの名無しさん:2019/10/04(金) 20:33:36.96 ID:igWxDR2f
>>402
HTAで作るって方向は無いのかな?
WScriptオブジェクトは使えないけど, IEと違ってローカル処理はできるよ.
全部HTAにするのが面倒ならUI部分をHTAで作って.
そこから, 各々vbsを起動するようにするとか.
サンプル http://www.42ch.net/UploaderSmall/source/1570156236.zip
406 :デフォルトの名無しさん:2019/10/05(土) 07:49:09.72 ID:XliNsfqD
ありがとうございます.
HTAも便利そうですね.
アドレスバー, リンクをドラッグドロップで取り込めるのがいいなと.
407 :デフォルトの名無しさん:2019/10/07(月) 16:39:36.79 ID:/M5l0Sli
そういやHTAはHighDPI対応してないのかな.
サーフェスで苦労した覚えが.
408 :デフォルトの名無しさん:2019/10/09(水) 19:08:15.06 ID:tUBbtl1D
文字列の画面表示の桁数はバッチで取得できますか?
半角1で全角2での合計みたいな.
409 :デフォルトの名無しさん:2019/10/10(木) 19:46:16.73 ID:NVkes/cJ
>>408
@echo off & if "%~1"=="1" goto x
set c=call "%~0" 1 ^^^| findstr /o /r .*
set o="skip=1 delims=:" & set /p s=文字列=
for /f %o% %%i in ('%c%') do set /a b=%%i-2
echo 桁数= %b% & pause & goto :eof
:x
setlocal enabledelayedexpansion
echo.!s!
echo.
入力はシフトJISで表示できる文字のみです.
CP932で正常に動作します. たぶん.
410 :デフォルトの名無しさん:2019/10/10(木) 23:42:47.50 ID:T8I5o9Ey
mode con かも.
411 :デフォルトの名無しさん:2019/10/11(金) 07:29:52.81 ID:D9aa0x5a
>>409, >>410
ありがとうございました!
コードページは932でしたので問題ないです.
これで複数のデータを右詰めで揃えて表示できました.
タブ入りだと表示がズレますが自分で対処します.
412 :デフォルトの名無しさん:2019/10/18(金) 19:14:42.75 ID:MUFbi2Ng
特定の2つのフォルダ内を一括削除するbatの作り方がわかりません・・・.
1つだけならば出来るのですが2つ指定するにはどうすればいいのでしょうか.
お願いします.
413 :デフォルトの名無しさん:2019/10/18(金) 19:26:30.68 ID:sHZx2IDB
1行目にAフォルダを削除.
次の行にBフォルダを削除でいいんじゃないの?
1行に書きたければ.
複数のコマンドを続けて実行する.
https://www.adminweb.jp/command/action/index1.html
414 :デフォルトの名無しさん:2019/10/18(金) 19:28:12.11 ID:DNcfAKqA
2回やるbatを作ればいいのでは?
415 :デフォルトの名無しさん:2019/10/18(金) 19:29:32.93 ID:DNcfAKqA
あ, かぶってしまった.
416 :デフォルトの名無しさん:2019/10/18(金) 22:56:14.67 ID:ZkRket+3
for %%I in ( C:\AAA C:\BBB ) do del /Q %%I\*.*
417 :デフォルトの名無しさん:2019/10/18(金) 23:57:13.31 ID:uNKAmOCu
for /f %%i in ('dir /b^|find "foo"') do pause
fooが無かった場合pauseしてくれないのですが解決策ありませんか?
実際はfooの有無で分岐させるのですがとりあえずpauseで書いてます.
418 :デフォルトの名無しさん:2019/10/19(土) 00:21:50.04 ID:nJ40H8MU
>>417
(for /f %%i in ('dir /b^|find "foo"') do pause) ||
pause
419 :デフォルトの名無しさん:2019/10/19(土) 00:29:35.02 ID:lUUAms6Y
>>418
ありがとう, できたらfor内で分岐したい・・・.
420 :デフォルトの名無しさん:2019/10/19(土) 00:34:28.69 ID:nJ40H8MU
forのループは条件が一致しないとすり抜けて.
1回も通らないで次のステートメントにいっちゃうから無理.
無理矢理やろうとすると, ダミー項目を与えて必ず一度はforループを実行するようにして.
その中でダミー項目だったら~と条件判定することになる.
421 :デフォルトの名無しさん:2019/10/19(土) 00:43:02.67 ID:nJ40H8MU
こんな感じ.
for /f %%i in ('dir /b^|find "foo"^|^|echo none')
do (if "%%i"equ "none" echo
ありません)
422 :デフォルトの名無しさん:2019/10/19(土) 00:49:42.45 ID:nJ40H8MU
俺としては>>418の方が見やすくて間違いが少なくて済むと思う.
423 :デフォルトの名無しさん:2019/10/19(土) 01:05:43.14 ID:lUUAms6Y
なるほど||つかう手もあるんですね.
for入れ子にしてるから||でいきますありがとう.
424 :デフォルトの名無しさん:2019/10/19(土) 01:26:01.92 ID:nJ40H8MU
forの後で, %errorlevel%で判断できるかと思ったけど.
forのコマンドは子タスクで実行されるから環境を親タスクに引き継がないんだね.
こういうことはパイプの右側でも起きるけど.
425 :デフォルトの名無しさん:2019/10/19(土) 07:15:14.93 ID:azMLqhGk
for /f "delims=" %%i in ('dir/b *foo* 2^>nul ^|^|
echo *')do (
if "%%~i"=="*" (echo ないよ) else echo %%i
)
426 :デフォルトの名無しさん:2019/10/20(日) 07:21:20.34 ID:bUbbfXYV
for /f "delims=" %%i in ('"dir/b *foo* 2>&1"')do
if not exist %%i echo %%i
427 :デフォルトの名無しさん:2019/10/21(月) 18:09:26.80 ID:8RixcIVS
なんか古代呪文を撃ちあってるみたい(^_^;)
428 :デフォルトの名無しさん:2019/10/21(月) 21:05:31.60 ID:Sv6Oxatw
そう, 実は, 古代語魔術(ハイエンシェント)を打ち合っているのです.
スレ違いだけれど,
魔法の使い方.
https://eman-physics.net/columns/magic.html
を, 思い出した.
429 :デフォルトの名無しさん:2019/10/21(月) 22:05:11.02 ID:nEQALG6h
ザイログニーモニックは忘れた.
430 :デフォルトの名無しさん:2019/10/22(火) 23:09:34.31 ID:jiuE9ZBi
詠唱せよ.
431 :デフォルトの名無しさん:2019/10/27(日) 14:29:49.16 ID:Lik42TLZ
cmd. exe /c start ってネットワークドライブのファイル開けないんでしたっけ?
cmd. exe /c start t:\test.txt ってやると.
アクセスが拒否されました. って表示される. c:\以下なら大丈夫.
cmd. exe /c start file:\\t:\test.txt ってやれば開けるからいいんだけど.
432 :デフォルトの名無しさん:2019/10/27(日) 19:40:17.02 ID:n+Gkmfbl
cmd /c start t:\test.txt
と.
start t:\test.txt
の違いは?
433 :デフォルトの名無しさん:2019/10/27(日) 19:45:47.81 ID:QHyOIS3t
startが内部コマンド.
434 :デフォルトの名無しさん:2019/10/27(日) 19:54:44.57 ID:n+Gkmfbl
なんで cmd /c が必要?
435 :デフォルトの名無しさん:2019/10/27(日) 22:46:50.23 ID:8uvk7ayg
>>434
ぐぐれかす.
436 :蟻人間@T6xkBnTXz7B0 - :2019/10/27(日) 23:17:38.75 ID:cNZwDfUU
>>434
内部コマンドは実行可能なモジュールではなく, cmd内部でのみ実行可能だから.
内部コマンドはcmdで解釈・実行される.
437 :デフォルトの名無しさん:2019/10/28(月) 01:22:07.40 ID:YqbFbBrf
>>434
バッチでは cmd /c は不要ですね.
cmd /c があれば子プロセスになります.
どっちも結果は同じ. エディタが起動します.
「ファイル名を指定して実行」の入力なら,
cmd /c start は不要かと思います.
でも, あっても間違いではないです.
438 :デフォルトの名無しさん:2019/10/28(月) 02:10:13.65 ID:t0sY5Haq
そんなこと聞いてないから, >>431に答えてくれ.
439 :438:2019/10/28(月) 02:18:17.09 ID:bqlyCkZ6
ネットワークフォルダをドライブに割り当てた問題かと思えば.
関係なさそうだ. でも不思議だ.
cmd. exe /c start \\server\folder だとフォルダが開ける.
cmd. exe /c start \\server\folder\subfolder でも問題ない.
cmd. exe /c start \\server\folder\test.txt だとアクセスが拒否される.
でもエクスプローラーのアドレスバーに [上矢印] を入れるとメモ帳で開ける.
440 :デフォルトの名無しさん:2019/10/28(月) 03:05:07.76 ID:ML+fUsJB
管理者権限でやってみては?
441 :438:2019/10/28(月) 03:54:57.58 ID:bqlyCkZ6
アクセスが拒否されました.
442 :デフォルトの名無しさん:2019/10/28(月) 07:04:53.54 ID:YqbFbBrf
>>438 すみません. 私には分かりません.
cmd/c を省略, さらに start を省略しても同じアクセス拒否ですか?
443 :デフォルトの名無しさん:2019/10/28(月) 08:16:04.60 ID:kjzN6NI8
>>439
>cmd. exe /c start \\server\folder\test.txt だとアクセスが拒否される.
>でもエクスプローラーのアドレスバーに [上矢印] を入れるとメモ帳で開ける.
このコマンドには, メモ帳を起動すると書いていないから, 起動できないだろ.
拡張子から, 起動するアプリを取得できないだろ?
そういう情報は, レジストリに入っているから,
バッチファイルから, そこへアクセスできるか?
444 :443:2019/10/28(月) 08:20:10.88 ID:kjzN6NI8
普通に「notepad パス付きファイル名」なら, 起動できるだろ?
445 :デフォルトの名無しさん:2019/10/29(火) 07:53:25.61 ID:SHkVBveq
>>439
エクスプローラーのバーに書くのも cmd/c start は要らんぞ.
446 :デフォルトの名無しさん:2019/10/29(火) 11:55:42.58 ID:w4Uxvw1j
>>443
バッチからでも関連付け起動できるぞ.
447 :デフォルトの名無しさん:2019/10/29(火) 12:51:26.56 ID:SHkVBveq
file:\\C:\Program Files (x86)\TeraPad\TeraPad.exe
>>446
>>443 は.txtの関連付けはメモ帳とは限らんと言ってる.
notepad.exe がネットワークドライブのファイル名を処理できるかは知らんが.
notepad file:\\t:\test.txt
みたいなのではダメだろうな.
start file:\\t:\test.txt
なら良さそうだが.
448 :デフォルトの名無しさん:2019/10/29(火) 12:53:59.00 ID:SHkVBveq
ああ1行目にゴミが付いたw 無視してくれ.
449 :デフォルトの名無しさん:2019/10/29(火) 13:09:40.06 ID:YQKoC2Uo
コマンドプロンプトの文字コードがよくわからん.
なんでchcp 932なのにUnicodeが表示できてるんだ?
chcpの設定とは無関係に画面はUnicodeで変換してるんか?
450 :デフォルトの名無しさん:2019/10/29(火) 13:26:49.20 ID:SHkVBveq
バッチはSJIS
リダイレクトするとSJIS
画面はユニコード.
set はユニコード特有文字でも入る(cmd画面で入力なら)
cmdの内部処理はユニコード.
451 :デフォルトの名無しさん:2019/10/29(火) 13:34:20.85 ID:spBBwL/I
Unicodeはいいが文字コードは何なんだ?
UTF-8なのか?UTF-16なのか?
452 :デフォルトの名無しさん:2019/10/29(火) 13:37:09.01 ID:SHkVBveq
16
453 :デフォルトの名無しさん:2019/10/29(火) 13:40:11.15 ID:spBBwL/I
>>452
と思うやろ?
typeコマンドは文字コード変換してるかもしれんなと思って.
copy ファイル名 CON なら, そのまんま表示されるだろうと.
思ってやってみたら,
UTF-8は問題なく表示されて, UTF-16は文字化けしてるんだよ.
Windows 10で仕様でも変わったんか?
454 :デフォルトの名無しさん:2019/10/29(火) 13:47:51.80 ID:SHkVBveq
変わらず.
後は自分で調べろ.
455 :デフォルトの名無しさん:2019/10/29(火) 13:53:47.92 ID:spBBwL/I
わからんのかーい. w.
456 :デフォルトの名無しさん:2019/10/29(火) 14:01:37.87 ID:SHkVBveq
図に乗るな.
457 :デフォルトの名無しさん:2019/10/29(火) 14:15:50.84 ID:spBBwL/I
やっぱり仕様が変わってた.
Windows 7だとchcp 932の時,
copy test.txt CON で正しく表示できるのはShiftJISだけ.
UTF-8でもUTF-16LEでも文字化けする.
Windows 10だと逆に, UTF-8(BOMなし), UTF-16LEは.
正しく表示できるが, ShiftJISは文字化けする.
458 :デフォルトの名無しさん:2019/10/29(火) 14:23:41.56 ID:SHkVBveq
そうなのか.
でも内部が16だと思うが.
分からん.
459 :デフォルトの名無しさん:2019/10/29(火) 14:27:54.02 ID:spBBwL/I
Windows 7でもdirコマンドでShiftJISにない文字は表示できてるから.
最終的にはUnicodeなんだろう(おそらくUTF16だと思うが)
その途中になんかあるんだろうな.
Windows 10でcopy CONつかってるのに, UTF-8とUTF-16の両方が.
文字化けしないのが不思議だ・・・って思ったら,
あれ?UTF-16文字化けしてた. んん?間違ってtypeで表示してたか.
これなら理解できる.
460 :デフォルトの名無しさん:2019/10/29(火) 14:44:03.37 ID:XkpxJQc3
>>457
いつのWindows10だね?
461 :デフォルトの名無しさん:2019/10/29(火) 14:52:33.20 ID:spBBwL/I
>>460
今の最新の公式リリース.
462 :デフォルトの名無しさん:2019/10/29(火) 14:56:43.68 ID:spBBwL/I
なんかわかりづらくなったので再掲.
copy test.txt CONで検証.
Windows7, chcp 932・・・text.txt が ShiftJIS だと正しく表示される.
Windows10, chcp 932・・・text.txt が UTF-8(BOMなし) だと正しく表示される.
463 :デフォルトの名無しさん:2019/10/29(火) 16:52:33.42 ID:spBBwL/I
なんかいろいろ勘違いしてたっぽい.
copy CONつかってもどこかの誰かが変換かましてるっぽい.
こんな漢字でバイナリ直接吐き出したら, chcp 932ではSJISしか正しく表示されなかった.
chcp 65001にしたらUTF8だけ.
Windows 10でだけど, たぶんWindows 7でも同じじゃないかな?
#include <iostream>
int main()
{
unsigned char str[] = { 0xE6, 0xBC, 0xA2, 0xE5, 0xAD, 0x97,
0xE2, 0x9D,0xA4 };
std::cout.write((char*)&str, sizeof(str));
}
464 :デフォルトの名無しさん:2019/10/29(火) 17:46:22.44 ID:4a4kNF+Q
一つわかった気がする.
コマンドプロンプトはUnicode対応してるけどバッチファイルはUnicode対応じゃないんだ.
(正確にはchcp 65001を実行すれば, UTF-8のバッチファイルを実行できる)
だからchcp 932のままコマンドプロンプトでUnicode文字を使うことができるけど.
バッチファイルにするとそれができない.
465 :デフォルトの名無しさん:2019/10/29(火) 17:46:59.43 ID:wQOUEDyj
テキストストリームだけしか通さないから何らかの変換が入ってるのかも知れないね.
copy /b hoge.txt con
指定されたデバイスに書き込めません.
0 個のファイルをコピーしました.
466 :デフォルトの名無しさん:2019/10/29(火) 18:03:33.66 ID:4a4kNF+Q
あ, copyに/bオプションなんてあったのか・・・.
467 :デフォルトの名無しさん:2019/10/29(火) 18:10:48.74 ID:4a4kNF+Q
そんな馬鹿な・・・. Windows 10でもShiftJISじゃないと表示されなくなっただと?
何度も確認したはずだぞ???
468 :デフォルトの名無しさん:2019/10/29(火) 18:37:30.30 ID:tLCpEMn0
Windows10については徐々に更新されているらしい.
Windows Command-Line: Unicode and UTF-8 Output Text Buffer
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/
469 :デフォルトの名無しさん:2019/10/29(火) 19:04:08.72 ID:SHkVBveq
少し前にここで同様の話題が有ったが UTF-8(BOM無し) のテキストは.
たとえ chcp 65001 しても type で一部分文字化けする.
findstr ^^ foo.txt
で正常に表示されるはず(chcp 65001 で)
470 :デフォルトの名無しさん:2019/10/29(火) 19:08:30.96 ID:SHkVBveq
あと chcp 65001 しても UTF-8 のバッチは.
正常に動作しないと思った方がいい.
471 :デフォルトの名無しさん:2019/10/29(火) 20:31:39.34 ID:ltL5L5Cn
あぁ, クソ. 意味がわからんけど, 理由がわかった.
1. まず, utf8.txt の中身をUTF-8で作る. ShiftJISにない文字も入れておく.
2. chcp を実行. 「現在のコード ページ: 932」と表示されることを確認する.
3. コマンドプロンプトを起動して, type utf8.txt にして文字化けすることを確認する.
ここまではなんの変哲もない.
4. powershell.exe -Command [Console]::OutputEncoding =
[Text.Encoding]::UTF8を実行する.
5. type utf8.txt を実行すると文字化けしない(!)
6. chcp を実行. 「Active code page: 932」と表示される. 932なのになぜか英語(!)
chcpを変更してもとに戻すと, 元に戻るし,
powershell -Command [Console]::OutputEncoding =
[Text.Encoding]::Defaultを実行しても元に戻る.
子プロセスであるはずのpowershellがなにかコマンドプロンプトの状態を変えてやがる.
なんだこれ?コマンドプロンプトに英語モードとかあったっけ?
472 :デフォルトの名無しさん:2019/10/29(火) 20:34:10.83 ID:ltL5L5Cn
コマンドプロンプトを起動するのは2の時の間違いな.
473 :デフォルトの名無しさん:2019/10/29(火) 20:38:52.72 ID:ltL5L5Cn
この話から気づくと思うけど,
powershell -Command [Console]::OutputEncoding
初期状態は, 日本語 (シフト JIS)
powershell -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
これでUTF-8に変更して.
powershell -Command [Console]::OutputEncoding
現在の設定を確認すると, UTF-8になってる.
chcpの値は変わらんのに, コードページを変えることができてしまっているかのようだ.
474 :デフォルトの名無しさん:2019/10/29(火) 21:33:51.82 ID:ltL5L5Cn
Windows 7にPowerShell6をインストールしてやってみたけど,
pwsh -Command [Console]::OutputEncoding = [Text.Encoding]::UTF8
で.
コードページが変わるな. Windows 7はまともに動かないので画面がバグる. w.
475 :デフォルトの名無しさん:2019/10/29(火) 21:41:58.40 ID:ltL5L5Cn
なるほど, SetConsoleOutputCPでコマンドプロンプトのコードページを変更できるらしい.
http://tooljp.com/language/C-Languate/sample-code/SetConsoleOutputCP-sample-code.html
476 :デフォルトの名無しさん:2019/10/30(水) 07:47:21.02 ID:WNRoeYsC
おれもコードページ弄って色々やったが上手くいかなかった.
typeは一部ダメ, moreは全くダメ, findstrはリダイレクトするとダメ,
copy~conは utf-7とjis が一部ダメ,
for~do echoでやると空行が抜けてダメという具合.
477 :デフォルトの名無しさん:2019/10/30(水) 08:50:12.52 ID:BvOaIOcB
エディタがあれば必要ない.
478 :デフォルトの名無しさん:2019/10/30(水) 11:07:44.00 ID:iT3/p0k9
>>476
なんとなく画面に表示する部分にバグがあるから.
バッチファイル内で閉じて画面に表示しなければ, chcp 65001で動くような気がする.
あとWindows 10ではそこらへんが直ってるので同じように考えるのは早計.
479 :デフォルトの名無しさん:2019/10/30(水) 11:25:55.22 ID:iT3/p0k9
Windows 7でこれが文字化けせずに動いた.
chcpで画面はクリアされるが, 正しく出力される.
[下矢印]UTF8 + CRLFで作成.
@echo off
chcp 65001
set A=ユニコード文字.
chcp 932
echo %A%
480 :デフォルトの名無しさん:2019/10/30(水) 12:04:53.93 ID:BvOaIOcB
>>262 みたいのは今でも化けるね.
>>476 はWindows10だと思う.
どっちにしろ不具合を把握しとくのは大事だね.
481 :デフォルトの名無しさん:2019/10/30(水) 12:11:59.20 ID:n2bLSC2q
chcp 65001 にしてもcmd /u で開き直さなきゃバグるんじゃない?
482 :デフォルトの名無しさん:2019/10/30(水) 12:17:27.39 ID:4eNYSN+t
chcpやってモード変更したとしても.
既に開いたハンドルは開いたときのモードのままだろうからね.
483 :デフォルトの名無しさん:2019/10/30(水) 12:27:14.70 ID:iT3/p0k9
>>480
化けると言うよりか, 文字の終わりを正しく認識できてない感じ.
これならうまくいく.
まずchcpをifの()内でやるとおかしくなる.
その上でsetする文字をダブルクォートでくくらなかったらおかしくなった.
なのでダブルクォートくくって, 出力時に外してる.
@echo off
chcp 65001
set A=
set B=
if "hoge"=="hoge" (
set A="あああ"
set B="いいい"
)
chcp 932
call :output %A% %B%
exit /b
:output
echo %~1
echo %~2
484 :デフォルトの名無しさん:2019/10/30(水) 12:29:13.59 ID:iT3/p0k9
ちなみに >>483 はchcp65001した状態でバッチファイルを実行すれば.
バッチファイルの中でchcpせずに動く.
あとファイルの文字コードはUTF8な.
485 :デフォルトの名無しさん:2019/10/30(水) 12:32:44.17 ID:iT3/p0k9
>>482
そうとは限らない.
chcpはどうやら内部でSetConsoleOutputCPを呼び出してるんだろうけど.
SetConsoleOutputCPっていうのはConsole APIの一つで,
コマンドプロンプトのコードページを変更する.
このAPIは子プロセスから親プロセスをたどって見つけた.
コンソール(コマンドプロンプト)のコードページを変更できる.
ハンドルのモードは関係なく, コンソールのコードページの話.
486 :デフォルトの名無しさん:2019/10/30(水) 12:38:00.67 ID:iT3/p0k9
>>252の改良でこれならうまく動くんだよな.
ダブルクォートはいるけど.
あとecho あああa みたいに最後をASCII文字にしても動く.
@echo off
chcp 65001
if "hoge"=="hoge" (
echo "あああ"
echo "いいい"
)
487 :デフォルトの名無しさん:2019/10/30(水) 12:45:45.44 ID:iT3/p0k9
こうすりゃいいのか. w.
@echo off
chcp 65001
if "hoge"=="hoge" (
call :echo "あああ"
call :echo "いいい"
)
exit /b
:echo
echo %~1
488 :デフォルトの名無しさん:2019/10/30(水) 12:46:49.70 ID:iT3/p0k9
まあバッチファイルでchcp 65001を使うのはやめたほうがいいと思うけど.
ワークアラウンドでどうにか対応できなくはないかもしれない. w.
489 :デフォルトの名無しさん:2019/10/30(水) 13:25:11.54 ID:iT3/p0k9
上の方でcmdがだめならPowerShellを使えばいいじゃないみたいなことが書いてあるけど,
UTF8の出力に関しては, コンソールの問題だから.
Windows 7, 8.1 ではPowerShellでもバグるんだよな.
Windows 7にPowerShell6を入れてみたが, デフォルトで.
「あいう」というファイル名が「ああいいうう」と表示される上に.
[Console]::OutputEncoding = [Text.Encoding]::UTF8 すると.
出力できませんみたいなエラーが発生する. w.
つまりWindows 7+PowerShell6だと日本語ファイル名は正しく表示されない.
標準搭載のPowerShell 2なら問題ないんだけどね.
490 :デフォルトの名無しさん:2019/10/30(水) 13:41:42.20 ID:zJjGNXoj
それは.
>これは, $OutputEncoding が Default だと US-ASCII になっているので, S-JIS
文字列を渡そうとしてもリダイレクト時に日本語がうまく扱えないからです.
>結論から言うと, $OutputEncoding を S-JIS に変更して clip.exe にリダイレクトすれば文字化けしません.
これが関係するのかな?
491 :デフォルトの名無しさん:2019/10/30(水) 13:53:29.35 ID:ecgQNQwo
hoge ディレクトリに.
test_1.txt ・・・半角スペースなし.
test 2.txt ・・・半角スペースあり.
test 3.txt ・・・全角スペースあり.
がある場合に.
@echo off
for /f "usebackq" %%I in (`dir /b "hoge"`)
do echo%%I
というバッチファイルを実行すると.
test_1.txt
test
test 3.txt
となって, 普通に dir /b "hoge" を実行した結果と異なり,
半角スペースのある文字列(test 2.txt)を渡せないのだけれど,
どうしたらいいですか?
492 :デフォルトの名無しさん:2019/10/30(水) 13:53:40.11 ID:iT3/p0k9
どこの記事だよw まあググったが.
https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
493 :デフォルトの名無しさん:2019/10/30(水) 14:08:53.46 ID:iT3/p0k9
clipは使ったのことがないので実験.
あとPowerShellのバージョンで色々変わるので,
その記事の内容から検証しないといかん. w.
* コマンドプロンプトより.
・chcp 932の場合.
OK: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・chcp 65001の場合.
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
* Windows 10 の PowerShell 5.1より.
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code
Page 932)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
* PowerShell 6.2より.
・[Console]::OutputEncoding = [Text.Encoding]::Default (Code
Page 65001)
NG: echo あいう | clip.exe
NG: echo (ユニコード文字) | clip.exe
ただし, コマンドプロンプトおよびPowerShell 5.1では.
?になるのにたいしてこっちは文字化けする.
494 :デフォルトの名無しさん:2019/10/30(水) 14:13:56.47 ID:iT3/p0k9
ここはPowerShellのスレじゃないんだが. w.
$OutputEncoding と [Console]::$OutputEncoding は別もんなんか!?
[Console]は[Console]::WriteLine とか使うときだけかな?
495 :デフォルトの名無しさん:2019/10/30(水) 14:16:01.69 ID:n2bLSC2q
>>491
"usebackq delims="
496 :デフォルトの名無しさん:2019/10/30(水) 14:21:07.12 ID:iT3/p0k9
[Console]::OutputEncoding と $OutputEncoding の.
両方をUTF8にしたらユニコード文字含めて文字化けしなかった.
* Windows 10 の PowerShell 5.1より.
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
?文字化け: echo あいう | clip.exe
?文字化け: echo (ユニコード文字) | clip.exe
???・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
?OK: echo あいう | clip.exe
??OK: echo (ユニコード文字) | clip.exe
497 :デフォルトの名無しさん:2019/10/30(水) 14:22:18.15 ID:iT3/p0k9
なぜか書き込みにゴミが入った・・・.
* Windows 10 の PowerShell 5.1より.
・[Console]::OutputEncoding = [Text.Encoding]::UTF8
?になる: echo あいう | clip.exe
?になる: echo (ユニコード文字) | clip.exe
・$OutputEncoding = [Text.Encoding]::UTF8
文字化け: echo あいう | clip.exe
文字化け: echo (ユニコード文字) | clip.exe
・[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
OK: echo あいう | clip.exe
OK: echo (ユニコード文字) | clip.exe
498 :デフォルトの名無しさん:2019/10/30(水) 14:24:19.49 ID:ecgQNQwo
>>495
あら, そんなことだったんだ.
どうもありがとう.
499 :デフォルトの名無しさん:2019/10/30(水) 14:27:47.60 ID:iT3/p0k9
[Console]::OutputEncoding は chcp 相当のことをしていて,
コンソールのコードページを変更しているのに対して,
$OutputEncoding は出力の文字コード変換の制御をしてるっぽい.
500 :デフォルトの名無しさん:2019/10/30(水) 14:46:57.29 ID:iT3/p0k9
[Text.Encoding]::UTF8 じゃなくて [Text.Encoding]::Unicode を使ってもうまくいく.
テキスト出力には, ASCII(?)モードとUnicodeモードというのがあるってのはわかってるんだよね.
https://blog.miz-ar.info/2017/01/wide-stdio-msvcrt/
> Unicode mode はさらに UNICODE モード (_O_WTEXT), UTF-8 モード (_O_U8TEXT),
> UTF-16LE モード (_O_U16TEXT) の3つに細分できる.
んで仮説.
[Console]::OutputEncoding は OutputEncoding と書いているけど,
実際にはコンソールのコードページを変更するもので.
コマンドプロンプトとPowerShellのプロンプト入力の文字コードも変えてしまうから.
名前に反して入力にも影響を及ぼしてるんじゃないだろうか?
[Console]::OutputEncoding + $OutputEncoding = [Text.Encoding]::UTF8
というのは, つまりプロンプトからの入力をUTF8, 出力をUTF8にするという意味.
Powershell で文字コードを変更する(clip.exe へのリダイレクトもね)
http://www.vwnet.jp/Windows/PowerShell/CharCode.htm
とかは, コンソールのコードページを変更してない=デフォルトのcp932状態で.
echoしてるから入力がcp932, そしてデフォルトの$OutputEncoding=US-ASCIIで.
文字化けするから(入力と同じ)cp932で出力しましょうねって話なんだと思う.
Windows 10以前は, コンソールのコードページ65001にバグが有って.
使い物にならなかったけど, Windows 10で修正されたから.
コードページ65001でコマンドプロンプトもPowerShellも正しく動くようになったんだと思う.
(ただしこれは画面出力の問題であって, UTF8でバッチファイルを書いた時のパース処理は別の話)
501 :デフォルトの名無しさん:2019/11/02(土) 13:44:45.56 ID:+w7z2z4x
https://duckduckgo.com/bang
https://duckduckgo.com/bang_lite.html
!you "Batch File"
!tw バッチファイル.
!tw "Batch File"
!ig BatchFile
!r BatchFile
!so "Batch File"
!gnuk "Batch File"
!msd cmd
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/windows-commands
502 :デフォルトの名無しさん:2019/11/02(土) 14:20:34.65 ID:+UvDifof
!hatebu バッチファイル.
!qiita バッチファイル.
503 :デフォルトの名無しさん:2019/11/03(日) 23:33:41.85 ID:/0rS8sv9
質問なのですが, 以下の内容を実行するバッチプログラムを作りたいのですが, どなたかご教示頂けないでしょうか.
Cドライブにある「A, B, C, D」という4つのフォルダとサブフォルダの中身全部を,
Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが, コピーする際以下の条件があります.
1. フォルダが1つしかない場合, その中だけにコピーする.
2. フォルダが複数ある場合は, それぞれのフォルダに1. と同様にコピーする.
宜しくお願いします.
504 :デフォルトの名無しさん:2019/11/03(日) 23:37:03.86 ID:Xh3slsXc
>>503
自分で作ってください.
505 :デフォルトの名無しさん:2019/11/04(月) 09:25:52.62 ID:0uHh5Wp4
宜しくお願いします. と書けば誰かがやってくれるとでも?
xcopy robocopy move for if set call dir findstr
この辺使えりゃ出来るから自分で調べろ.
"バッチ バックアップ" とかでググれば腐るほど例が出るだろ.
506 :デフォルトの名無しさん:2019/11/04(月) 13:01:25.95 ID:Zu03xGz4
>>493-500
Ruby で, クリップボード内の複数行文字列の, 各行の先頭・末尾から,
連続する空白類を除去して, クリップボードに入れる.
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換.
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する.
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す.
clip.print( ary.join "\n" )
end
>>503
そんな複雑な条件を, バッチでプログラミングするのは無理!
Ruby などのプログラミングで, 再帰的にコピーするか,
PowerShell で, robocopy を使うとか.
507 :デフォルトの名無しさん:2019/11/04(月) 13:46:43.19 ID:UHaJ6Kuw
> Ruby で, クリップボード内の複数行文字列の, 各行の先頭・末尾から,
> str = `powershell Get-Clipboard`
Rubyでできないなら, もう全部powershellで書いちゃえよ. w.
508 :506:2019/11/04(月) 15:48:40.94 ID:Zu03xGz4
>>503
Ruby で作った.
FileUtils::DryRun では, 実際には実行しない.
require 'fileutils'
src_dirs = [ "C:/Users/Owner/Documents/A/",
"C:/Users/Owner/Documents/test/B/"]
target_dir = "D:/何々/*"
# target の子フォルダの配列.
dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?(
path) }
return if dest_dirs.length == 0 # フォルダが存在しない.
src_dirs.each do |src_dir| # 2重ループ.
dest_dirs.each do |dest_dir|
FileUtils::DryRun.cp_r( src_dir, dest_dir )
end
end
509 :デフォルトの名無しさん:2019/11/04(月) 22:13:40.62 ID:mdzUzifN
>>505 >>508
有難うございます.
それらでググって調べてやってみます.
510 :デフォルトの名無しさん:2019/11/05(火) 12:51:32.26 ID:3/4kxzup
>>509 参考にどうぞ.
@echo off
set s="C:\"
set d="D:\XXXX"
cd/d %s%
for %%i in (A B C D) do call :x "%%~fi" "%%~i"
pause & exit/b
:x
pushd %d%
for /d %%j in (*) do xcopy /e /i %1 "%%~j"\%2
popd
511 :デフォルトの名無しさん:2019/11/05(火) 18:52:56.56 ID:ykrQtfUP
>>510
そんな複雑なことをしなくても, @echo offを除いて1行で書けるだろ.
@echo off
for %%s in (A, B, C, D) do for /d %%d in (D:\XXXX\*) do xcopy
"C:\%%s""%%d\%%s" /e /i
512 :デフォルトの名無しさん:2019/11/05(火) 20:10:31.32 ID:3/4kxzup
多分 %%~fd やね.
513 :デフォルトの名無しさん:2019/11/05(火) 20:28:07.61 ID:ykrQtfUP
%%dだけでフルパスになるから~fは不要.
514 :デフォルトの名無しさん:2019/11/05(火) 20:42:07.32 ID:3/4kxzup
そうか失礼いたしました.
515 :デフォルトの名無しさん:2019/11/05(火) 20:50:46.27 ID:kqXSHliE
火[22]義母と娘ブルース
11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)________14.15
これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって,
その時点での相加平均値を表示してくれるバッチファイルってできますか?
INPUTを使うのかな.
あと, ウィンドウを開いている間生きている変数ってファイルへの格納, 取り出しって.
そんな面倒なことしてるなら表計算ソフトでも使えってか.
516 :デフォルトの名無しさん:2019/11/05(火) 21:30:33.42 ID:HPnxYMOW
>>515
出来なくはないけれど set /a では整数しか扱えずバッチのみでやるのは面倒.
やるならPowerShell とか wsh, js かな.
単に平均出すだけなら電卓アプリの方が楽.
517 :デフォルトの名無しさん:2019/11/05(火) 22:38:05.69 ID:aoMnc07l
Dim str
str =""
Dim num
Dim ans
Dim bln_Confirm
Function main()
str = InputBox("数値を入力", , str)
If instr(str, "_") Then
ans = Eval("(" & Replace(str, "_",
"+")& ")/" & UBound(split(str, "_"))+1)
else
ans = Eval(str)
End If
bln_Confirm = MsgBox("入力数値:" & str & vblf
& vblf& "入力の平均:" & ans, 3, "続ける?")
str = str & "_"
End Function
Do
main
Loop While bln_Confirm = vbYes
VBSならこうかな?
518 :デフォルトの名無しさん:2019/11/06(水) 01:50:43.91 ID:ZR40S1lI
Ruby で作った.
最後の(終) の部分は, 数字とみなされないので, 無視される.
str = "11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)"
ary = str.split( "__" ) # 数字部分を配列に入れる.
ary.map!( &:to_f ) # 文字列を浮動小数点へ変換する.
p ary.inject( :+ ) / ary.length # 合計 / 要素数.
519 :デフォルトの名無しさん:2019/11/06(水) 03:37:02.69 ID:sEBZ5Hrs
スレタイも読めないメクラか?
ドヤりたいなら該当スレへ逝け.
520 :デフォルトの名無しさん:2019/11/06(水) 15:19:13.85 ID:Z1XrM+Fl
:ALCL
@echo off &setlocal enabledelayedexpansion
echo 少数切り捨て. 少数以下は求めたい桁数まで0埋めして入力.
echo 少数2位まで求めたい場合 ex: 12.4 -^> 1240
echo 00で Clear, 000で AllClear
set i=
:LOOP
set /a i+=1
:INPUT
set /p N%i%=数値を入力 :
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo
入力無効 &goto:INPUT)
if !N%i%!==000 goto :ALCL
if !N%i%!==00 (
if %i% leq 2 goto :ALCL
if %i% gtr 2 set /a i-=2
)
set s=
set r=
for /l %%a in (1, 1, %i%) do (
set s=!s! !N%%a!
set /a r+=!N%%a!
)
set /a r/=%i%
echo %s% : %r%
goto :LOOP
521 :デフォルトの名無しさん:2019/11/06(水) 15:48:22.56 ID:Z1XrM+Fl
set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo
入力無効 &goto:INPUT)
上のに真ん中の行追加で.
522 :デフォルトの名無しさん:2019/11/06(水) 20:50:16.92 ID:wTTuQQRz
バッチファイルは難しすぎ!
引数の概念がLinuxと全く違う.
523 :デフォルトの名無しさん:2019/11/06(水) 23:04:29.95 ID:wTTuQQRz
空白が入ったパスをバッチファイルにわたすために.
ダブルクォートで括らないといけないが,
それをやると, 変数にダブルクォートが入るのがクソなんだな.
しかも, if "%1" == "" とか書くと, 引数がダブルクォート.
一個だったときにエラーが出るとかいろいろ破綻してる.
524 :デフォルトの名無しさん:2019/11/07(木) 01:48:00.01 ID:4r3ojeSB
>>522
難しすぎというよりは適当仕様すぎ.
仕様を安易に何回も拡張した, 増築して迷路化した老舗旅館.
525 :デフォルトの名無しさん:2019/11/07(木) 04:42:48.88 ID:nSoHFrko
>>511
@for %%s 以下略じゃダメなの?
526 :デフォルトの名無しさん:2019/11/07(木) 06:29:37.44 ID:lb8cogBR
>>525
それならdoの後のforとxcopyにも@付けろ.
何でも一行にすりゃいいわけじゃないがな.
527 :デフォルトの名無しさん:2019/11/07(木) 06:59:41.26 ID:LFqMQC4+
>>523
%~1で外せるでしょ?
528 :デフォルトの名無しさん:2019/11/07(木) 07:54:19.69 ID:isVFtAa0
>>520さんありがとうございます.
"これこそが私の求めていたものだ"
そんな慣用句?ローマの名文句?ってあったっけと思ってしまいますた.
000と00の入力処理で使いやすくなっているのがセンスというか実際の使用を考えた親切な仕様だなと思います.
訂正できるのは本当に便利だ.
VBSとRubyで書いてくださった>>517さんと>>518さんにも感謝.
自分の要求仕様がどう解釈・解決されるのか勉強になります.
529 :デフォルトの名無しさん:2019/11/07(木) 09:58:22.71 ID:d6TMJd25
>>528
冗談で書いたんだが. . これなら同様のアプリ探した方がいいんじゃない?
あと以下修正, >>521部分も含む.
:INPUT
set N%i%=
set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo
入力無効 &goto:INPUT)
Clear後に空入力繰り返すと消したのが戻ってまたClearしてと繰り返す挙動が直る.
実害無いだろうから敢えてそのままにするのも有り.
既存の環境変数に set /p で空入力しても 空で上書き初期化されずそのまま残るみたい.
530 :デフォルトの名無しさん:2019/11/07(木) 10:37:33.42 ID:sEmiRyTj
>>527
どこ見てもその程度. みんな適当なんだよな.
まず最初に書いた例から. バッチファイル(test.bat)を.
1. このように書いた時.
if "%1" == "" echo 引数なし.
> test.bat "
コマンドの構文が誤っています.
2. このように書いた時.
if "%~1" == "" echo 引数なし.
> test.bat "
引数なし.
[*] [上矢印]間違い. 「"」という引数があります.
3. このように書いた時.
if %~1 == "" echo 引数なし.
> test.bat "
echo の使い方が誤っています.
531 :デフォルトの名無しさん:2019/11/07(木) 12:19:13.92 ID:Z6Qb1qTa
Windowsバッチの仕様がダメダメというのはそのとおりだが,
引数が " だけというのは, かなり特殊な想定だよな.
これが大丈夫という言語ってあるのか?
この場合とは違うが, 外部アプリから""でくくったパスなどを渡してもらうときは,
アプリの方で, \"~\"で吐き出すように設定して,
バッチファイルで, この\を削除するようにすることで,
引数展開でおかしな動作をさせないようにしている.
e.g. fxのOpenWithアドオンなど.
532 :デフォルトの名無しさん:2019/11/07(木) 12:32:04.92 ID:sEmiRyTj
>>531
言語関係ない. コマンドプロンプトの仕様だから.
例えばechoでダブルクォートだけを出力したいなら.
echo " と書くしか無い.
PowerShellとかコマンドプロンプトを使わないなら.
閉じてないダブルクォートの扱いを変えることは可能だが,
コマンドプロンプトはもうどうしようもない. w.
そしてこれ(もともとはMS-DOSの仕様)を前提に.
Windows版のC言語とかのCRTライブラリが作られ,
mainに渡る前に, そういう文字列を解釈するようになってる.
533 :デフォルトの名無しさん:2019/11/07(木) 12:33:31.15 ID:sEmiRyTj
> この場合とは違うが, 外部アプリから""でくくったパスなどを渡してもらうときは,
> アプリの方で, \"~\"で吐き出すように設定して,
いきあたりばったりなんだよな. w.
本当にここらへんの奴らは適当.
534 :デフォルトの名無しさん:2019/11/07(木) 12:40:37.56 ID:sEmiRyTj
https://thinca.hate
nablog.com/entry/20100210/1265813598
\ は,
ダブルクォートの内外を問わず, " の前に \ を前置すると " 自身を表現できる.
\\" とすると \" の \ をエスケープしたことになり, \" になる. この "
は特殊文字である.
\\\" とすると \\ + \" になり, \" になる. この " は "
文字自身である.
以下, \ が増える度に上記のようなエスケープを繰り返す.
\\\\" -> \\" (" は特殊文字)
\\\\\" -> \\" (" は通常文字)
上記以外の場所にある \, つまり後に " が続かない \ は, いくつ重なっていてもその文字自身になる.
535 :デフォルトの名無しさん:2019/11/07(木) 12:53:05.11 ID:LDERshfw
>>528
バッチ/シェルスクリプトは, 複雑なプログラミングをするものじゃない!
Ruby, PowerShell, VBScript などを使うべき.
まず, データの仕様を作るべき.
その程度のデータなら, 普通は, CSV 形式とか.
1. どこかのサイトから, データの集積物を取得する.
2. それをパースして, CSV 形式に変換する.
一旦, CSV へ変換すれば,
その後は, Rubyなど, 様々なプログラミング言語で処理できる.
1の部分は, Ruby, Selenium WebDriver などで, クローラー・スクレイピングも出来る.
536 :デフォルトの名無しさん:2019/11/07(木) 12:58:16.29 ID:lb8cogBR
>>531
まったくスレチだけどGnuPGのパスワードを思い出した.
引用符だけのパスワードを渡す場合は.
pass "
>gpg -c --passphrase ^""" hoge.txt
pass ""
>gpg -c --passphrase """"""
hoge.txt
pass """
>gpg -c --passphrase ^"""""""""hoge.txt
何でこうなるかは知らんがGnuPGだけの話さ.
コマンド側でどう引数処理するかだよな.
バッチでは普通ダメだね.
537 :デフォルトの名無しさん:2019/11/07(木) 13:04:39.19 ID:sEmiRyTj
ダブルクォートを"""と3個やっても動かないときは,
"""" に増やして動くか.
""""" に増やして動くか.
""""" に増やして動くか.
これぐらいまで試す.
あるある.
538 :デフォルトの名無しさん:2019/11/07(木) 13:26:56.23 ID:Z6Qb1qTa
>>536
クォートの先頭にエスケープが必要な場合でも,
後ろの方は何故かエスケープが不要なことがあるんだよな.
*nix系から移植したプログラムで, こういう事がたまに起きる.
いずれにしても, 謎仕様・・・.
539 :デフォルトの名無しさん:2019/11/08(金) 05:39:07.91 ID:78hADO4V
set x=echo
%x% qqq
set a=y
set %a%=3
echo %y%
どちらもできた.
540 :デフォルトの名無しさん:2019/11/09(土) 12:37:18.78 ID:9Z+ynpem
もう無理だ. w.
if "%value%" == "" echo match
こんな感じのコードで, %value% にどんな文字.
(ダブルクオート, スペース, カンマ, その他記号)が.
入っていてもエラーにならないというコードを.
バッチファイルで書くのは不可能だ. w.
お手上げ. \(-o-)/
541 :デフォルトの名無しさん:2019/11/09(土) 12:55:41.49 ID:hmJLHo7y
IF NOT DEFINED VALUE
542 :デフォルトの名無しさん:2019/11/09(土) 13:02:21.70 ID:9HGwW/1Y
>>541
あ, ごめん. 実際は右側, 値が入ってる.
if "%value%" == "abc" echo match
543 :デフォルトの名無しさん:2019/11/09(土) 13:03:25.05 ID:hmJLHo7y
setlocal enabledelayedexpansion
if "!value!"=="abc" echo match
endlocal
544 :デフォルトの名無しさん:2019/11/09(土) 13:14:34.88 ID:9HGwW/1Y
あれ?マジで?それだけでいけちゃうの?
545 :デフォルトの名無しさん:2019/11/09(土) 13:22:47.16 ID:hmJLHo7y
これな, "abc"の方が要注意なんよ.
^とか!とか入ってるとやばいかも.
setlocalの前に代入して.
if !a!==!b! とかやった方がええかもな.
546 :デフォルトの名無しさん:2019/11/09(土) 13:53:03.27 ID:9HGwW/1Y
>>545
右側, 固定値なら大丈夫だよね?
547 :デフォルトの名無しさん:2019/11/09(土) 14:00:20.08 ID:hmJLHo7y
うん多分, 変な文字入って無けりゃね.
遅延モードだと全角文字のリテラルにも一部副作用が有るかも.
548 :デフォルトの名無しさん:2019/11/09(土) 14:07:53.35 ID:9HGwW/1Y
なんだよ, 全角文字の副作用って・・・.
せっかく進んだのに. w.
549 :デフォルトの名無しさん:2019/11/09(土) 14:15:55.11 ID:hmJLHo7y
setlocalの外で代入すりゃ問題ない.
遅延の中では書くな.
あと, if !a!==!b! に " はたぶん不要.
550 :デフォルトの名無しさん:2019/11/09(土) 14:26:55.47 ID:9HGwW/1Y
setlocalの中で代入するとなにか問題があるのか・・・.
551 :デフォルトの名無しさん:2019/11/09(土) 14:37:46.76 ID:hmJLHo7y
ええと.
setlocal enabledelayedexpansion ~ endlocal の中だよ.
552 :デフォルトの名無しさん:2019/11/09(土) 15:15:35.38 ID:hmJLHo7y
>>550
すまん. おれの勘違いだった.
全角文字は関係無かった. 無視してください.
でも^や!は要注意だけど.
553 :デフォルトの名無しさん:2019/11/09(土) 17:06:16.41 ID:hmJLHo7y
でもif文自体が挙動不審だからなあ.
if "----"=="""" echo 同じ.
554 :デフォルトの名無しさん:2019/11/09(土) 20:49:07.09 ID:9HGwW/1Y
>>553
ShiftJISだとだめだけど, バッチファイルをUTF8で保存したら大丈だったよ!
ただし, それでも引数で渡すとダメだったけど. www.
555 :デフォルトの名無しさん:2019/11/09(土) 20:57:33.36 ID:9HGwW/1Y
>>553
それも enabledelayedexpansion 使えば大丈夫じゃない?
setlocal enabledelayedexpansion
set A=%1
if !A! == "" echo 同じ.
もうやだこの言語(?)
556 :デフォルトの名無しさん:2019/11/09(土) 21:14:31.85 ID:9HGwW/1Y
@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.
557 :デフォルトの名無しさん:2019/11/09(土) 21:24:41.89 ID:9HGwW/1Y
@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.
これ人間が制御できるものなんか?
558 :デフォルトの名無しさん:2019/11/10(日) 09:44:25.06 ID:fP398yW4
setlocal enabledelayedexpansion は >>540対策で使えるけど,
それ以外はもっと制御が難しいかも・・・.
基本は通常のsetlocalで比較のときだけ.
部分的に使ったほうが良さそう.
今回は頑張ったけど, もうやらない.
559 :デフォルトの名無しさん:2019/11/10(日) 15:37:42.63 ID:noq81T2Q
スレ伸びてると思ったらほぼ ID:9HGwW/1Y だったでござる.
560 :デフォルトの名無しさん:2019/11/10(日) 20:23:39.65 ID:u8+xJCBj
for in って for %%i in (*) みたいにワイルドカードが含まれていればファイルを検索する機能で.
for %%i in (a b c) みたいにワイルドカードが含まれてない場合は.
ファイルがあるなしに関係なく, a, b, cを繰り返す機能ってことであってますか?
561 :デフォルトの名無しさん:2019/11/14(木) 15:51:47.87 ID:MT98n7t2
多重フォルダの中身を.
一番上のフォルダにまとめるスクリプトってどうやるの?
できればフォルダをドラッグ&ドロップしたいんだけど.
562 :デフォルトの名無しさん:2019/11/14(木) 21:52:50.32 ID:ah6E9oLX
>>561
for /r %1 %%i in (*) do move "%%i" \
563 :デフォルトの名無しさん:2019/11/18(月) 20:56:52.03 ID:/+k2TWLn
なんかこんなバッチファイルがあったけどうまく動かない.
for /f "usebackq tokens=1" %%A in (`tasklist /fi
"imagenameeq SKRWATCH*" /fo
"table" /nh`) do
if "SKRWATCH.EXE"=="%%A" (echo %%A &
exit) else(START /D
C:\Users\user1\Downloads\skrw021 SKRWATCH)
564 :デフォルトの名無しさん:2019/11/18(月) 21:18:40.00 ID:45qFz0UJ
>>563
うまく動かないでは状況が不明(エラーxxxが表示とか具体的に)
・tasklistは動くのか?(tasklist /?)
・そのままコピペしてるのなら動かなくて当然.
(doの前に全角空白があるし, doの後も改行されてる.
起動するパスがexeと空白で区切られてるがタイプミスか)
・対象はそのEXEで間違いないのか, パスに間違いはないか.
565 :デフォルトの名無しさん:2019/11/18(月) 21:26:40.79 ID:45qFz0UJ
>起動するパスがexeと空白で区切られてるがタイプミスか.
これはフォルダ指定だから記述に問題はなかったね.
566 :デフォルトの名無しさん:2019/11/19(火) 00:58:21.49 ID:f1OS2g5Q
>問題はなかったね.
問題あるから動かねーんだろwwバカじゃね?
いきなりバッチじゃなくてプロンプトでコマンドひとつひとつ動作するか確認してみろやボケ.
567 :デフォルトの名無しさん:2019/11/19(火) 03:01:51.46 ID:DFw2Dz+B
pause & exit
コンソール入力で起動なら exit/b
568 :デフォルトの名無しさん:2019/11/20(水) 12:24:50.17 ID:2S7bcPNj
テキストファイルの[version]ってタグの上に任意の文字列を追記したいんですけどなにかいい方法ありませんかね?
[下矢印]なイメージです.
key = value
[version]
569 :デフォルトの名無しさん:2019/11/20(水) 13:04:27.56 ID:Tu0gcZfO
batじゃしらんけどperlかawk使えるスクリプトのほうが簡単だと思う.
570 :デフォルトの名無しさん:2019/11/20(水) 13:53:46.39 ID:xBPN5HFi
エディタでの置換じゃ無理な処理数なん?
batで文字列操作は事故の元.
JSかPSでも使えば?
571 :デフォルトの名無しさん:2019/11/20(水) 17:43:27.76 ID:jZ8vbKIX
>>569
>>570
やりたいことはローカルセキュリティーポリシーテンプレートを書き換えたいんですよ.
seceditってコマンド使うんですけどその書き換えの部分を自動化したいんです.
因みにPSでは使えないです.
572 :デフォルトの名無しさん:2019/11/20(水) 19:20:58.96 ID:Tu0gcZfO
これでいけないかな.
https://qiita.com/kurukurupapa@github/items/f4439fd5c33f6ebfec62
573 :デフォルトの名無しさん:2019/11/20(水) 19:53:19.75 ID:p2TBD6cq
一行ずつぐるぐる回しながら表示して.
[version]だったら, その表示の前に追加すればいいだけじゃん.
574 :デフォルトの名無しさん:2019/11/21(木) 09:08:09.78 ID:YDFq+t9K
いいやPS使ってもらう.
575 :デフォルトの名無しさん:2019/11/21(木) 10:25:48.48 ID:Wg+WlOX1
ファイルを一行ずつ読み込んで出力する処理に.
ちょこっと手を加えるだけだから簡単だな.
576 :デフォルトの名無しさん:2019/11/21(木) 11:16:31.45 ID:LvODftpp
簡単だったら早く教えろよな.
キレちゃうぞこのやろう.
577 :デフォルトの名無しさん:2019/11/21(木) 11:47:37.77 ID:xinrmZtD
PSで簡単にできたからもういいわ.
578 :デフォルトの名無しさん:2019/11/21(木) 12:46:53.45 ID:7xPdmDWo
>>572
行頭が数字なのにeolの指示は無意味.
delimsを数字にしないとまずいし.
他人のバッチを鵜呑みにして理解していないバッチ.
579 :デフォルトの名無しさん:2019/11/21(木) 15:03:03.19 ID:8WRatKwZ
EUCテキストだから, ファイル名をそのままfindstrに突っ込むのは無理だな.
580 :デフォルトの名無しさん:2019/11/21(木) 16:04:24.91 ID:7xPdmDWo
>>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)
581 :デフォルトの名無しさん:2019/11/21(木) 16:15:57.27 ID:7xPdmDWo
>>580 を実行前は chcp 932
582 :デフォルトの名無しさん:2019/11/21(木) 20:46:01.60 ID:8WRatKwZ
EUCじゃなくてUnicode(UTF16)だった.
583 :デフォルトの名無しさん:2019/11/21(木) 22:34:33.13 ID:2C4HvUZs
コード変換ソフトがないと, 無理かな.
584 :デフォルトの名無しさん:2019/11/21(木) 22:42:46.40 ID:8WRatKwZ
いやfindstrにファイル名渡さないようにすればそれでいい.
'type %s%^|findstr /n ^^'
cmd /u /c hoge.bat in.txt out.txt
585 :デフォルトの名無しさん:2019/11/21(木) 22:47:11.20 ID:8WRatKwZ
^^じゃダメだった.
^^^^か"^"だね.
586 :デフォルトの名無しさん:2019/11/21(木) 23:14:31.55 ID:t93OqxgW
>>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]
587 :デフォルトの名無しさん:2019/11/21(木) 23:21:01.84 ID:8WRatKwZ
ただBOMが付かないね.
BOMが無いと使えないかどうかは怖いので試してない.
588 :デフォルトの名無しさん:2019/11/22(金) 00:14:32.18 ID:UfmR8W/F
>>587
@echo off & if "%~1"==":x" goto x
set "a=key = value" & set "b=[version]"
& sets="%~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 (setc=%%i
setlocal enabledelayedexpansion
set d=!c:*:=!& if /i !d!==!b! echo.!a!
echo.!d!
endlocal)
589 :デフォルトの名無しさん:2019/11/22(金) 00:20:53.00 ID:UfmR8W/F
>>588
あらかじめbom付き空テキスト用意しておけば.
もっと簡単なバッチになるけどね.
590 :デフォルトの名無しさん:2019/11/22(金) 02:00:26.84 ID:iZoP+Nd2
FINDSTR: // は無視されました.
/n /rとするか, /nだけにするか.
591 :デフォルトの名無しさん:2019/11/22(金) 02:02:44.42 ID:iZoP+Nd2
/nrで良いか.
592 :デフォルトの名無しさん:2019/11/22(金) 02:47:17.93 ID:UfmR8W/F
そうだな. 直ぐ消えるので気付かなかった.
動作はするようだが.
スペース入れた方が無難だね.
593 :デフォルトの名無しさん:2019/11/22(金) 08:47:38.56 ID:wKGQ5j7v
rubyきちがいきてるね.
594 :デフォルトの名無しさん:2019/11/22(金) 09:49:43.81 ID:VuiommTl
無視無視.
595 :デフォルトの名無しさん:2019/11/22(金) 12:09:43.22 ID:f2CG40En
point of no return
596 :デフォルトの名無しさん:2019/11/23(土) 16:13:10.37 ID:x4sN5Hm0
質問した人は登場しないね.
ひょっとして>>577が最後?
597 :デフォルトの名無しさん:2019/11/23(土) 16:50:58.80 ID:xep2e/TT
awkが手軽で楽そうだがユニコードできたっけ?
598 :デフォルトの名無しさん:2019/11/25(月) 13:59:48.96 ID:6F6igyhI
WindowsならPSで良いだろ.
文字コードもドトネトで扱える範囲で指定できるし.
599 :デフォルトの名無しさん:2019/11/26(火) 10:19:19.63 ID:NW9y+uW0
用途:エクセルにある複数の画像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では変わりませんでした.
600 :デフォルトの名無しさん:2019/11/26(火) 10:20:48.75 ID:NW9y+uW0
>並べて書いた.
batファイルにしてからダブクリのため.
601 :デフォルトの名無しさん:2019/11/26(火) 12:23:55.89 ID:ImxGWCjG
httpのみでhttps未対応だしリファラやUA見られてても落ちないと思う.
ダウンローダーはその辺勝手にやってくれてるんだよ.
取り敢えずこれ真似してforでlist読んでやってみれば?
https://automationlabo.com/wat/?p=570
602 :デフォルトの名無しさん:2019/11/26(火) 12:32:29.83 ID:NW9y+uW0
>>601
ありがとう, そこのサイトみてやってるんだ.
ちなみに今はHTTPS対応してるようで.
https://maku77.github.io/windows/cmd/download.html
https://qiita.com/uratatsu/items/d77152ca121d0b779464
一件づつコピペだったらできるんだ.
ダウンローダーについては気軽にスレで聞いてるけど,
画像ごとにフォルダを指定して一気に保存ができるものはないみたい.
昔懐かしいirvineができる的な噂見てやってみたけど, フォルダ指定ができない. orz.
603 :デフォルトの名無しさん:2019/11/26(火) 13:46:11.40 ID:ISv3uuWx
しらんけど.
前の行の処理が完了する前に次の物が始まるのがまずいなら.
Call でいんじゃないの?
604 :デフォルトの名無しさん:2019/11/26(火) 14:15:56.61 ID:ImxGWCjG
call または start "" /wait コマンド.
605 :デフォルトの名無しさん:2019/11/26(火) 14:16:12.39 ID:JyI6kWkc
特定に箇所にダウンロードして, ダウンロードが終わったら移動するんじゃダメなの?
なんでダウンロードするアプリにフォルダ指定の機能まで期待するんだろう.
頭硬いのかな.
606 :デフォルトの名無しさん:2019/11/26(火) 14:22:21.16 ID:Rh/VLF1h
bitsadmin の代わりに cURL を試してみては.
607 :デフォルトの名無しさん:2019/11/26(火) 14:40:23.78 ID:jwtMC5+Q
>>599
ジョブにaddfile/addfilesetオプションでurl追加すればできるみたいだけど.
608 :デフォルトの名無しさん:2019/11/26(火) 14:41:21.48 ID:ISv3uuWx
たしかにそれぞれのファイルのフォルダ指定をすること自体がめんどくさそう.
ダウンロードフォルダにその人が望む各保存先フォルダのショートカットおいてまとめて突っ込む方が楽そう.
609 :デフォルトの名無しさん:2019/11/26(火) 14:51:14.37 ID:NW9y+uW0
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をそのままフォルダにされても, 今回の場合は探し出すのが大変なんだよ,
ファイルに行くまでに何回クリックいる? x100だよやりたいならどうぞ私は嫌です. w.
(単なるスクラップならせいぜい1サイトくらいだからむしろそれでいい)
つか, あなたのそのやり方やるぐらいなら, URLのリストをいっこづつコピペで.
開いてブラウザから保存したいフォルダにD&Dしたほうが何十倍も速いぞたぶん.
だってDLしたあとで探す手間いらないですよね?
610 :デフォルトの名無しさん:2019/11/26(火) 14:55:31.49 ID:JyI6kWkc
>>609
>だってDLしたあとで探す手間いらないですよね?
なにを探すの?
空のディレクトリに一個だけダウンロードしたらmoveするだけじゃん.
しかもダウンロードするファイル名分かってるんだろ?
まとめてダウンロードしてからでも人間が探す必要なんかないじゃん.
ダウンロードディレクトリにあるんだから.
脳みそ足りて無くない?
611 :デフォルトの名無しさん:2019/11/26(火) 14:59:19.90 ID:NW9y+uW0
>>607
!!
調べてみます!
まあそりゃねぇ.
管理ナンバー URLっていう100個のリストにある画像集める必要があって.
素直にそのURLをブラウザで開いてD&Dもしてましたよ・・・けど開いてる時間すら.
面倒になってきまして・・・.
ダウンローダーいろいろ探したけど, ブラウザのダウンロードフォルダ固定とか.
ダウンロードする画像ごとにフォルダ指定しろダイアログとか, そーじゃねーよと. w.
もうそのいちいちダイアログがうぜえwでも振り分けずぜんぶいっしょくたも困る.
で, GoogleスプレッドでIMPORTXMLで画像リスト出していまここって感じ.
599の状態でビャーってなればよかったのだが. (もっといい方法あったらそっちがいいけど!)
612 :デフォルトの名無しさん:2019/11/26(火) 15:05:17.28 ID:NW9y+uW0
>>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.
613 :デフォルトの名無しさん:2019/11/26(火) 15:25:21.93 ID:XdTMGSyO
batで外部プログラムの実行完了まで待つ呼び出し方法は.
start /wait
って上で誰かが言ってるだろ.
614 :デフォルトの名無しさん:2019/11/26(火) 15:33:34.59 ID:ISv3uuWx
ツリー上に保存しなけりゃいいし.
ダウンロードフォルダのルートで*でサブフォルダ含めて検索してもすぐまとめて表示されるしなあ.
615 :デフォルトの名無しさん:2019/11/26(火) 15:49:02.22 ID:NW9y+uW0
ツリーに保存しないとダメだからそうしてるんだけど.
この管理番号の画像これですよーと明示できなければならないからリストがあるわけで.
必ず4つ, 必ず5つならDL時即時リネーム連番にしてもいいけど・・・3しかなかったり6あったりする.
それを検索するにしても画像リストと照合しながら?工程増えすぎ. 元の手順より面倒になっても. w.
waitはダメでした.
trancefar ~.
wait
trancefar ~
は使い方間違ってますか?
trancefar ~複数URL
wait
もだめでした・・・.
616 :デフォルトの名無しさん:2019/11/26(火) 15:54:58.38 ID:SASMXjiT
start "" /wait bitsadmin
でしょ.
617 :デフォルトの名無しさん:2019/11/26(火) 15:56:32.80 ID:ISv3uuWx
いちいち一個ずつ保存先指定するより楽だよ.
検索っていっても保存先フォルダことにダウンロードすれば*でやりゃいい.
618 :デフォルトの名無しさん:2019/11/26(火) 16:10:59.88 ID:XdTMGSyO
とにかくダウンロードが正常に終わるようにならないと先に進めないだろ.
ダウンロード時にフォルダが決まるならそれで問題解決だし.
外部ダウンローダを使うのなら, 落としたファイルとurlとの対応が取れるのかが問題.
それが可能(例えばファイル名が行番号になってるとか)なら.
落とした後にファイルを対応するフォルダに移動すればいい.
もちろんbat等の自動化で.
619 :デフォルトの名無しさん:2019/11/26(火) 16:20:26.70 ID:ImxGWCjG
start "" /wait bitsadmin /TRANSFER FILEDOWNLOAD %%B
%~dp0\%%A\%%C
urlに&とか%は無いの?
620 :デフォルトの名無しさん:2019/11/26(火) 16:26:58.84 ID:NW9y+uW0
>>617
それ, ブラウザでURL開いて, 保存先フォルダ開いてD&Dのほうが早いよ?
今時のブラウザ, コピペと同時に開くんだから.
>>618
それな;
>>616
!
そういう使い方になるのか!ありがとうございます!
でも空ファイルだった. w.
Dirとmdで生きてるのでもう脳みそ煮えてますわ・・・.
621 :デフォルトの名無しさん:2019/11/26(火) 16:34:10.52 ID:NW9y+uW0
>>619
ある. %20とか?とか.
https://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12345.jpg?123456
https://hoge.hoge.com/foto/img/MARC%20MAX/MARC%20MAX-20191003123-A-12346jpg?1234
こんな感じ.
bitsadmin~を一つだけ書いた場合はちゃんと動作するから大丈夫な・・・.
えっ??まさか%%
622 :デフォルトの名無しさん:2019/11/26(火) 16:50:52.29 ID:ISv3uuWx
>>620
一個ずつドラッグドロップする気?
623 :デフォルトの名無しさん:2019/11/26(火) 16:51:59.31 ID:ISv3uuWx
>>618
ダウンローダーなら正常に終わるでしょ.
624 :デフォルトの名無しさん:2019/11/26(火) 16:57:32.34 ID:XdTMGSyO
>>623
一般的なダウンローダなら, urlの末尾がファイル名になるが.
名前の重複も多く起き, その場合, ダウンローダは自動的にリネームする.
aaa.jpg, aaa(1).jpgのように.
しかも(1)が付くのは早くダウンロードが終わったものでリストの上から順というわけでもない.
これとリストにあるurlとの対応をとるのは大変だと思わん?
625 :デフォルトの名無しさん:2019/11/26(火) 17:03:32.54 ID:JyI6kWkc
>>624
結局一つずつダウンロードする必要があるだろ?
やっぱり何を探せなないのが全くわからんなぁ.
626 :デフォルトの名無しさん:2019/11/26(火) 17:04:08.93 ID:ISv3uuWx
>>624
重複はツリー上で保存すりゃ起きない.
627 :デフォルトの名無しさん:2019/11/26(火) 17:07:32.81 ID:NW9y+uW0
>>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&D4工程.
628 :デフォルトの名無しさん:2019/11/26(火) 17:10:41.82 ID:ImxGWCjG
>>621
詰み.
&なら "%%~B" とすれば行けたかもだけど.
バッチで%~%のエスケープは出来なくないもののかなり面倒くさい.
powershellとか行った方がいい.
どうせ自動化するのなら>>612の元listから抽出してDLする方法をPSスレとかで相談してみれば?
629 :デフォルトの名無しさん:2019/11/26(火) 17:15:21.53 ID:NW9y+uW0
で, 私はその3工程ですらめんどくっせーってなって, 3工程とも省けんかなと考えた.
#今後も同じ作業あるから, 今なんとかできてると今後が楽.
ダウンローダーのダウンロード先の問題って, こうなるんだよね.
http://imepic.jp/20191126/620210
ふ, ふかい. (これはFirefoxアドオンのスクラップブック. DownloadAllThemもこういう感じ)
お気に入りのサイト見るだけならアドオンからわかるんだけど, 画像を取り出すとなると.
エクスプローラーに行く必要がある.
630 :デフォルトの名無しさん:2019/11/26(火) 17:15:53.07 ID:ISv3uuWx
>>627
エクセルに入れてるってんだから.
まとめてURL処理してるんでしょ.
D&Dをファイル数分しなくちゃならんのを言ってるんだが.
まとめてURL処理してるならD&Dは1回でいい.
631 :デフォルトの名無しさん:2019/11/26(火) 17:18:49.77 ID:NW9y+uW0
>>628
うへwわろすwそういうことか!
Powershellはこっち以上に全くわからんな・・・.
画像リストはGoogleスプレッドにぶんなげて作れてはいる.
ありがとう.
632 :デフォルトの名無しさん:2019/11/26(火) 17:19:23.77 ID:ImxGWCjG
0バイトになるのは書き込み権限とか.
管理者で実行しても変わらない?
633 :デフォルトの名無しさん:2019/11/26(火) 17:23:52.25 ID:NW9y+uW0
>>632
transfarされる前に次にいっちゃって, でもファイル作れって言ってるから空のファイルつくりましたって感じに見える.
transfar実行画面のBYTE:0/0のところが, いっこづつやったときはにゅ------って動いてファイル捕れるんですが.
ここが0/0のままで次を始めてしまう.
Wait入れようが, Pauseいれようが, そこは同じですね.
634 :デフォルトの名無しさん:2019/11/26(火) 17:42:23.81 ID:NW9y+uW0
>>631
エスケープさせてできました!!
コマンド自体もスプレッドシートに関数くんでやってるので, どこかの時点で%
を置き換えてやることにします.
ヒントありがとうございました.
みなさまもたくさんヒントありがとうございました.
635 :デフォルトの名無しさん:2019/11/26(火) 17:50:12.00 ID:XdTMGSyO
>>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"
)
636 :デフォルトの名無しさん:2019/12/07(土) 09:30:10.75 ID:/m01ABgd
>>634
おい逃げるなよ.
637 :デフォルトの名無しさん:2019/12/08(日) 23:47:18.40 ID:wNkvi2te
>>636
こわいよ. w.
もはや逃げることはできぬぞ, か.
638 :デフォルトの名無しさん:2019/12/09(月) 14:56:56.31 ID:0+3TB6cR
トレンドに#業務ハックというのが上がってた. フーン.
ここにいるわるいオジサン達は徹底的に省力化して, あとは仕事するフリして過ごすようなことは.
まさかしていませんよね?
639 :デフォルトの名無しさん:2019/12/10(火) 05:01:38.65 ID:CfjKoCjD
無理そうな気はしつつも質問.
苗字<tab>名前<tab>年齢<tab>住所.
田中<tab>太郎<tab>27<tab>大阪.
山田<tab>花子<tab><tab>東京.
佐藤<tab><tab>35<tab>
こんな表のテキストファイルを<tab>を区切り文字として列指定して読み込みたいんだけど.
tokens=2, 4
にしても連続した<tab>は一括りに扱われて山田と佐藤は対象の列がずれちゃうよね.
これはもうvbsやVBAじゃないと無理ぽかな.
640 :デフォルトの名無しさん:2019/12/10(火) 07:15:07.41 ID:BTxKZMwl
>>639
delimsに指定してもダメなの?
641 :デフォルトの名無しさん:2019/12/10(火) 07:44:27.57 ID:CfjKoCjD
半角スペースは文字列として扱いたいから<tab>だけを指定してるけどダメよー.
642 :デフォルトの名無しさん:2019/12/10(火) 09:16:41.59 ID:3V5uc2tI
>>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>にはタブを入力.
643 :デフォルトの名無しさん:2019/12/11(水) 01:05:38.94 ID:hz4JPg2Q
おお, 値の無い列には半角スペースを入れてしまうわけか.
こりゃ気付かんかったサンクス.
644 :デフォルトの名無しさん:2019/12/13(金) 01:06:30.14 ID:7bx1tfw6
バッチでフォルダの表示方法とかかえられないよ?
詳細にして 表示の種類に長さとか大きさとか.
いれたいんだけど.
それをワンクリックでやりたい.
https://i-bitzedge.com/wp-content/uploads/2016/03/Search-Contextual-tab-Windows-10.jpg
名前とか日付のとこに 長さとか大きさを追加するってことね.
645 :デフォルトの名無しさん:2019/12/13(金) 01:06:50.17 ID:7bx1tfw6
かえられないよの?
646 :デフォルトの名無しさん:2019/12/13(金) 04:06:09.26 ID:t9dRWycX
>>645
レジストリ値弄れば出来たと思う.
昔職場の環境統一するのに使ってた.
詳細はRegshotとかで差分とって.
バッチからはRegコマンドで設定するかRegEdit /s で読み込むかのどちらか.
647 :デフォルトの名無しさん:2019/12/13(金) 04:07:58.73 ID:t9dRWycX
>>645
設定後にShellの再起動も必要だったかも.
648 :デフォルトの名無しさん:2019/12/13(金) 06:18:44.99 ID:SOm460Ps
>>646-647
レジストリか.
なるほど.
ちょっと色々調べてみます.
649 :デフォルトの名無しさん:2019/12/19(木) 16:55:31.02 ID:l8jrOhSU
こういうの実行するとサブフォルダのファイルでは空行ではなくピリオドが出力されるんですが何故ですか?
まあ実用上の問題は無いんですが.
@echo off
for /r %%i in (*.*) do (
echo "%%~nxi"
echo.
)
pause
650 :デフォルトの名無しさん:2019/12/19(木) 17:08:49.51 ID:TZP99wd2
ピリオドとかコロンじゃなくて, カンマとかセミコロン使えばいいよ.
651 :デフォルトの名無しさん:2019/12/19(木) 17:16:19.46 ID:TZP99wd2
イコールもお仲間で, この3つが特別区切り記号らしいよ.
652 :デフォルトの名無しさん:2019/12/19(木) 17:18:33.06 ID:l8jrOhSU
>>650
はい, カンマを使うと問題が起きないことは確認していたのですがピリオドだと何故こうなるのか気になりました.
653 :デフォルトの名無しさん:2019/12/19(木) 17:23:09.51 ID:TZP99wd2
特別区切り記号だから.
654 :デフォルトの名無しさん:2019/12/22(日) 19:05:52.87 ID:DvnYZkai
/rが悪さをしてるんじゃね.
サブフォルダの中でピリオドを2個にして.
655 :デフォルトの名無しさん:2019/12/23(月) 21:26:36.07 ID:qZ1/nSQb
startコマンドでAPを起動後, 「F11」をバッチファイルから入力するには, どう記述すればいいのでしょうか?
656 :デフォルトの名無しさん:2019/12/25(水) 01:34:54.95 ID:vipj7N9s
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')
DOset
cscexe=%%i
%cscexe% temp.cs
temp.exe
657 :デフォルトの名無しさん:2019/12/25(水) 11:28:21.34 ID:E0w5VXt3
>>656
ワラタ.
658 :デフォルトの名無しさん:2019/12/25(水) 12:39:52.06 ID:32sm7KoS
>>656
すごいな, プロ?
659 :デフォルトの名無しさん:2019/12/26(木) 00:38:52.07 ID:ocAthgHy
ウイルスに使えそう. w.
660 :デフォルトの名無しさん:2019/12/26(木) 18:09:54.44 ID:gPRn8RL/
職業 プロバッチファイルスクリプター(自称)
661 :デフォルトの名無しさん:2019/12/27(金) 00:09:22.71 ID:CW1qzWXe
%1がフォルダ名の場合, サイズを示す%~z1は0以外の数字になる.
何を表しているのか不明.
662 :デフォルトの名無しさん:2019/12/27(金) 07:50:28.51 ID:sZ8rOkNi
エントリーレコードのsizeじゃね?テキトーmaybe
663 :デフォルトの名無しさん:2019/12/28(土) 12:01:21.14 ID:c8Bqzbdx
>>662
そんな数字が多いですね.
\windows\winsxs や * だと違う表示も出るので意味不明, バグなのか.
664 :デフォルトの名無しさん:2020/01/02(木) 17:54:09.99 ID:LCDlLvJS
for の %~tI のみたいに簡単にディレクトリの作成日時を取得する方法教えてください.
dir /tc 何か | findstr findstr /e /c:"<DIR> ."
みたいにして取り出して整形するのは何か間違えている気がしてならないので.
665 :デフォルトの名無しさん:2020/01/02(木) 20:56:32.19 ID:gZNl6+48
%~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 なら秒まで取得出来るしバッチより痒いところに手が届く.
666 :デフォルトの名無しさん:2020/01/02(木) 20:59:21.16 ID:gZNl6+48
修正.
%a->%%a
echo %%a%%b%%c%%d%%e
667 :デフォルトの名無しさん:2020/01/03(金) 08:18:43.19 ID:6GenP8Ub
ありがとうございます.
何か一発でディレクトリ作成日時を取り出すなら PowerShell 使おう,
って話になるんですね, ミリ秒単位までいけるみたいですし.
668 :デフォルトの名無しさん:2020/01/03(金) 09:56:56.50 ID:+cYn5CAB
forfiles でフォルダの更新日時も得られる, ただしファイルが多いと遅い.
forfiles /M ファイル名 /C "cmd /c echo @fname @fdate @ftime"
dirだと得られない秒もOK, 仕様がばらばら, バッチは不思議.
669 :デフォルトの名無しさん:2020/01/03(金) 13:02:11.21 ID:fh28MJ7p
気まぐれに試してみたら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
670 :デフォルトの名無しさん:2020/01/04(土) 01:23:14.19 ID:/SGph6WX
dir ?
親DIRがピリオド2文字なのに.
なぜ表示されるのか.
671 :デフォルトの名無しさん:2020/01/04(土) 07:59:26.77 ID:T5YxFwCT
. と .. はディレクトリ作成時に同時に作成されルート以外の全ディレクトリに存在する特殊な .link のようなモノ.
だから .. の(作成|更新)日時は自ディレクトリと同じ.
.. は親ディレクトリを指し示すが親ディレクトリとは別のモノ.
なぜと問われても, そういう仕様だから, としか.
672 :デフォルトの名無しさん:2020/01/04(土) 09:10:30.39 ID:/SGph6WX
>>671
ピリオドは区切り文字であり,
ワイルドカードの?の文字数のカウントに含まれず.
ピリオドが先頭だと, 最初のトークンは空文字列となり,
?は一文字以下の文字列を表すので, それに合致するわけかな.
ちなみに >>670 はそれより前のレスとは無関係.
673 :デフォルトの名無しさん:2020/01/05(日) 07:41:36.68 ID:QOfK3b7c
>>670
dir /b ? だと表示しない謎.
674 :デフォルトの名無しさん:2020/01/06(月) 09:00:53.84 ID:VNkic2h1
ディレクトリと同じ扱いだから.
675 :デフォルトの名無しさん:2020/01/06(月) 09:51:26.33 ID:8LUwvv7f
先頭にドットがあると要注意だよな.
ワイルドカードがドットを無視する場合があるから.
>copy nul .txt
>copy nul txt
>dir/b
.txt
txt
>del txt*
>dir
ファイルが見つかりません.
676 :デフォルトの名無しさん:2020/01/08(水) 10:00:17.73 ID:cX66OF4O
簡単な処理だからbatでいいかと思って書き始めたら思ったより複雑になって, なんでbatで書いちゃったんだろってなるのいい加減やめたい.
677 :デフォルトの名無しさん:2020/01/09(木) 05:17:30.74 ID:yWGnEtOx
@echo off
for /L %%a in (1, 1, 666) do set /a a+=%%a
for /L %%a in (2, 2, 666) do set /a a+=%%a
echo %a%
pause
for /L で遊んでたらなんか凄いの見付けた.
678 :デフォルトの名無しさん:2020/01/09(木) 07:12:55.26 ID:hqwlnXXW
>>676
PowerShellでいいんじゃね?
679 :デフォルトの名無しさん:2020/01/17(金) 04:34:01.53 ID:AQjsaOZ5
ドラッグ&ドロップ したファイル名を表示させようと思ってんだけど.
win10です.
テスト.bat
-----------------------
@echo off
for %%f in (%*) do (
echo %%f
)
pause
--------------------------
だとドラッグドロップしても画面が速攻消えてうまく起動しないんだけど(
ちなみに.
@echo off
echo %1
pause
だけだとちゃんとフルパスで表示されます.
%%と%の違いってなんですか?
680 :デフォルトの名無しさん:2020/01/17(金) 05:40:03.52 ID:FVJQifjo
引数が最低1つ以上の場合.
:LOOP
echo "%~nx1"
shift
if not "%~1"=="" goto :LOOP
pause
引数が0個の可能性がある場合.
:LOOP
if "%~1"=="" pause &exit /b
echo "%~nx1"
shift
goto :LOOP
681 :デフォルトの名無しさん:2020/01/17(金) 08:29:31.32 ID:B/evOggr
shift使わない方法でお願いします.
682 :デフォルトの名無しさん:2020/01/17(金) 08:39:02.58 ID:FVJQifjo
>>679
その方法だとファイル名やPathに&とか全角spとかダメ文字含む+半角spが無くて.
引数がクオートされていない場合に上手く行かない.
がこの場合引数欠けるだけだと思うので落ちるのは文字コード(ShiftJIS)と改行コード(CR+LF)を確認.
683 :デフォルトの名無しさん:2020/01/17(金) 18:45:30.02 ID:Xdf1G9+g
WSLって専用スレあったりする?
684 :デフォルトの名無しさん:2020/01/17(金) 18:48:00.37 ID:T5MzU9c3
>>680
あー>>680のやり方の方がいいわせか.
>>682
できましたありがとう.
685 :デフォルトの名無しさん:2020/01/18(土) 06:36:29.01 ID:77YAYmoS
>あー>>680のやり方の方がいいわせか.
そうじゃない. いいも悪いもない. こういう方法もあるよと提示しただけ.
バッチはどうやってもバグを内包する. 極論動けば何でもいい.
バグを発生させないよう限定された条件の元で利用するかバグ避けコードを書くかになる.
そういったのを理解した上で簡単な事をやるくらいならいいけど.
少し複雑な事をしようとすると確実にあちらを立てればこちらが立たずで行き詰まったり面倒な事になる.
面倒を避けたいなら初めからPowerShellとかでやった方がいい.
今から覚えるなら尚更.
686 :デフォルトの名無しさん:2020/01/18(土) 08:02:35.56 ID:UuH5oHRt
>>679
ドラッグ&ドロップ したファイル名に.
たぶん ) があるんだろう.
a(1).txt
とかね.
なぜ落ちるか自分で考えてみろ.
687 :デフォルトの名無しさん:2020/01/18(土) 23:29:59.70 ID:jJ2WRqDf
>>686
それな.
バッチはこういう罠があるからPSに移行したわ.
コメント欄に迂闊に括弧も使えないしこわいこわい.
688 :デフォルトの名無しさん:2020/01/23(木) 20:57:19.47 ID:qiuXI8ht
ネストされた環境変数が展開されない事象について.
https://social.technet.microsoft.com/Forums/ja-jp/0add404a-4157-416f-bf15-0ad455102d85/12493124731248812373124281238329872226592279325968123642363738?forum=Wcsupportja
689 :デフォルトの名無しさん:2020/01/26(日) 21:47:29.72 ID:Nyn5xlpx
2つのウィンドウで別フォルダを表示してファイル存在の有無によって選択/解除ができその後コピーや移動ができる,
そんなファイラーがあったら便利だなと探してました.
WinZIP関係のソフトで7-zipというのがあり, なぜか解凍するとその中に7-zip file managerというのが入っていて.
起動してみると左右で別フォルダを表示することができオッ, と思ったのですが, 存在を比較する機能はありませんでした.
orz.
ファイル存在比較 で検索したら [バッチ作成]の文字が目にとまりページを開くと次のようなバッチファイルでした. コピー/移動作業前の確認用に.
便利だなと思いました. 実際はif existでもいいし, 自分用に少し書き換えました.
@echo off
echo AにあってBに無いファイル.
pushd \A
for %%X in (*) do if not exist \B\%%X echo %%X
popd
echo BにあってAに無いファイル.
pushd \B
for %%X in (*) do if not exist \A\%%X echo %%X
popd
popd,
pushdってアスキーのラーニングシステムシリーズ本のMS-DOSのやつで最初に書かれていたんだけどまったく使わないわなんて思ってそのままでした.
690 :デフォルトの名無しさん:2020/01/26(日) 23:31:16.84 ID:Jc09ZNe5
そんなことまで無理にcmdでやらんでも・・・.
WinMergeすら入れさせてもらえない環境なのか?
691 :デフォルトの名無しさん:2020/01/27(月) 09:15:34.68 ID:+0QHC3Wk
日記?
692 :デフォルトの名無しさん:2020/01/28(火) 22:49:16.68 ID:lbmGsP+l
"送る"って意外と不自由なんだな・・・.
バッチファイルでワンクッション入れて, ウマー.
693 :デフォルトの名無しさん:2020/01/28(火) 23:14:40.52 ID:Vj4Y99PX
何が不自由なの.
694 :デフォルトの名無しさん:2020/01/30(木) 20:40:29.71 ID:6k+E856c
このバッチで何か入力しても a が消える.
@echo off
set /p a=data=
rem %a=%
echo data=%a%
pause
695 :デフォルトの名無しさん:2020/01/30(木) 22:45:14.45 ID:VR7HU+gm
>693
勉強不足があるかも知れんが.
・さっさと画面を閉じちゃう(cmd/kで回避)
・%1に入れてくれない.
・ファイル名の後ろにオプションが付けられない.
696 :デフォルトの名無しさん:2020/01/30(木) 23:26:29.39 ID:D5cDwkr0
ワンクッションってそういう意味か.
昔からスクリプトを送るに登録することなんて当たり前のことだったけどね.
むしろexeしか登録しない人はこのスレにはいないとまで思ってた.
697 :デフォルトの名無しさん:2020/01/31(金) 11:16:38.40 ID:JWfC0/9e
>>694 何かエラーすると正常になるよ(笑)
@echo off
set a=123
rem %a=%
if defined a (echo 1) else echo 0
echo a=%a%
nul 2> nul
if defined a (echo 1) else echo 0
echo a=%a%
pause
結果.
0
a=
1
a=123
698 :デフォルトの名無しさん:2020/02/09(日) 18:23:32.44 ID:62ExnvKA
叩いたらスクリーンセーバーをオフにしたく, killでスクリーンセーバーのscrファイルを終了させるバッチを作ったんだけど,
Windows10のタブレットモードで動かすとスタートメニューが起動してしまう.
元々立ち上げてたソフトを表示したいんたけど何か良い方法ないかな?
ソフトを立ち上げっぱなし->スクリーンセーバー起動->条件下でスクリーンセーバーkillバッチ->立ち上げてたソフトに戻る.
ってのにしたいのにkillバッチ->スタートメニューになってしまう.
あと, バッチを走らせると一瞬黒いcmd画面がでるのでvbs経由で画面を出さないようにしようとしたけどこちらもうまくいかない・・・.
699 :デフォルトの名無しさん:2020/02/10(月) 13:13:43.33 ID:0DoxGo8j
スクリーンセーバー動いてるのに,
どうやってバッチ叩いてんの?
さっぱりわからん.
700 :デフォルトの名無しさん:2020/02/10(月) 23:18:37.16 ID:B/3TWI1a
>>698
ネタだよね?
701 :デフォルトの名無しさん:2020/02/11(火) 12:30:00.59 ID:DitzTCfU
何かをトリガーにしてタスクから叩くって事じゃないかな.
702 :デフォルトの名無しさん:2020/02/11(火) 17:11:28.69 ID:DSTYXSth
特定のキー操作で解除するタイプのスクリーンセーバーなのかな?
でもそれならそれでkillするんじゃなくて該当のキーを送ればよいだけな気がするけど.
703 :デフォルトの名無しさん:2020/02/11(火) 17:51:57.47 ID:hksaF/sY
Windows7標準のmklinkでシンボリックリンクを作ると.
リンクのタイムスタンプ(作成, 更新, アクセスいずれも)は.
リンク先ファイルのタイムスタンプに関係なくリンク作成時点のものになり.
普通のファイルのようにはタイムスタンプを変更できないようだけど.
変更する方法ある?
ハードリンクなら同じものを見ることになるから勝手に揃うけど.
使い分けの方針が定まらなくてあまり使ってない.
704 :デフォルトの名無しさん:2020/02/11(火) 23:47:43.79 ID:9k84sg+E
>>703
シンボリックリンクの実体はファイルだからSetFileTimeで変更できるらしいぞ.
らしいってのは俺がシンボリックリンクつかったことないからね.
705 :デフォルトの名無しさん:2020/02/14(金) 23:11:39.08 ID:2Mmdz3hG
Windows Vistaは2017年にサポートが終了しましたがWindows Server
2008向けのセキュリティ更新プログラムを手動でインストールすることができていました.
ところがどの順番でどれをインスコすればいいのか面倒, , , それを解決するバッチプログラムを作った方がいます.
バッチファイルの記述がフムフム, へぇ~という感じで自分にはとても勉強になりました. 興味ある方はどぞ.
創造の柱.
http://blog.livedoor.jp/pillars_of_creation/archives/1831755.html
706 :デフォルトの名無しさん:2020/03/24(火) 10:56:05.36
このスレで聞くべきなのか分かりませんが, Windowsで数千個のPDFを一括処理したいので, 取りあえずここで聞いてみます.
PDFをAcrobatで開いた時のプロパティ(「文書のプロパティ」で, "表示", "ページレイアウト","倍率"を設定できますが,
1つ1つ手作業で設定するのはさすがに無理です.
Javaの様なプログラミング言語でも, 他のアプリでも何でもいいんですが, この文書のプロパティを一括で設定する方法って何がありますか?
707 :デフォルトの名無しさん:2020/03/24(火) 18:54:16.84 ID:k6OnWQi4
それってAcrobatのデフォルトの表示方法を変えればいいんじゃない?
708 :デフォルトの名無しさん:2020/03/24(火) 19:52:05.20 ID:LC2xv/4E
変更前後のAcrobatのレジストリをエクスポートしてdiff比較してどこが変わってるか確認するのが最初にやることだろうね.
709 :デフォルトの名無しさん:2020/03/24(火) 20:27:13.25
>>707
Acrobat側の表示方法を変えるのじゃ無く, PDF側で変えたい.
710 :デフォルトの名無しさん:2020/03/24(火) 20:53:17.46 ID:k6OnWQi4
そもそもPDF側に表示方法が保存されてるものなの?
結局Acrobat側の問題じゃない?
711 :デフォルトの名無しさん:2020/03/24(火) 22:35:05.89 ID:tH0Sn0AY
「pdf コマンドライン ページレイアウト」でググったら.
cpdf (Coherent PDF Command Line Tools) を紹介するサイトが出てきた.
これ, 見開きを縦スクロールにしたり単ページにしたりできて面白い.
"倍率" が 2017/10 の時点で無理らしいけど.
712 :デフォルトの名無しさん:2020/03/26(木) 01:20:56.78 ID:3WOBAGMl
ID消して質問してるのがすげー腹立つな.
本当に解決を望んでるなら逆にコテ付けるぐらいできんのか.
713 :デフォルトの名無しさん:2020/03/30(月) 02:44:24.40 ID:X7klH3J+
windowsってことだけどpdfいじるならMac OSのautomatorじゃね?知らんけど.
714 :デフォルトの名無しさん:2020/04/18(土) 11:05:03.45 ID:6HUykZ9A
今でもたまに使うけどUTF8系のスクリプトとの相性がめっちゃ悪いな.
いちいちコードページ指定するとなんかウィンドウが切り替わって重いし.
cmdをchcp 65001 (UTF8)で常用するって現実的じゃないよね?
715 :デフォルトの名無しさん:2020/04/18(土) 14:03:40.50 ID:a+OnqKl3
MSはレガシーのために保守してるだけだろ.
powershell使え.
716 :デフォルトの名無しさん:2020/04/18(土) 16:57:49.71 ID:VodBEB+r
例えば, こんなバッチをutf-8で作成して実行する.
できたtest.txtを見たら1行しかない. なんでだ.
@echo off
chcp 65001
call :test > test.txt
exit
:test
echo テスト.
echo テスト.
717 :デフォルトの名無しさん:2020/04/18(土) 17:12:48.44 ID:fYZW+FI9
このスレで, utf-8 のバッチファイルにするなら,
行末は半角英数な文字にしとけ.
というのを学んだ, >>262 からの流れ.
なんでなのかはいまだに知らない.
718 :デフォルトの名無しさん:2020/04/18(土) 17:22:50.42 ID:D5FH+wQt
2つめのechoがエラーになってるね.
echo テスト.
echo テスト.
と間に空白行を挟めば正常だがどういう理屈なのか分からん.
719 :デフォルトの名無しさん:2020/04/18(土) 17:31:32.83 ID:VodBEB+r
れすサンクス.
720 :デフォルトの名無しさん:2020/04/21(火) 19:56:52.87 ID:vK3trFFL
%2つというのは, 何らかのエスケープですか?
また, forを使うときにfor %iなどとしますが, %の意味がよくわかりません.
721 :デフォルトの名無しさん:2020/04/21(火) 21:11:11.38 ID:vK3trFFL
フォルダ内のファイルを連番つけてリネームする方法はわからないでしょうか.
forを使用してインデックスを連番として付与する感じだと思うんですが.
ファイルはこんな感じです.
犬.txt
猫.txt
猿.txt
722 :デフォルトの名無しさん:2020/04/21(火) 21:17:03.32 ID:FdhLTsrP
>>720
%は互換性や拡張などのおかげで大変ややこしい事になっている.
説明するには小一時間かかるのでここでは控える事にする.
723 :デフォルトの名無しさん:2020/04/21(火) 21:26:09.14 ID:M3jMZi3+
>>720
%は変数を定義する時に使うよ %iで「iという変数」になるよ.
バッチプログラムで使う時は%%iにする必要があるよ.
https://www.pg-fl.jp/program/dos/doscmd/for.htm
「%」のページも読んだ方が良いよ.
724 :デフォルトの名無しさん:2020/04/21(火) 22:46:58.98 ID:HADG6GDb
>>721
Ruby で作った.
ただし, DryRun なので実際には実行されません.
001.txt, 002.txt に変わります.
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに, * を付けること!
# . で始まる, 隠し directory, file を除く.
dir_path = "C:/Users/Owner/test/*"
target_dir = File.dirname( dir_path ) # ディレクトリパスだけを取り出す.
Dir.glob( dir_path )
.select { |full_path| File.file?( full_path ) } # ファイルのみ.
.each.with_index( 1 ) do |full_path, idx| # index は, 1 から始まる.
# format で, 0埋め3桁表示にする. extname は拡張子.
# ファイル名は, 001.txt, 002.txt など.
dest_path = target_dir + "/" + ( "%03d"
% idx ) + File.extname(full_path )
FileUtils::DryRun.move( full_path, dest_path )
end
725 :デフォルトの名無しさん:2020/04/21(火) 22:54:20.97 ID:h/bjIQIw
rubyはスレ違い.
726 :デフォルトの名無しさん:2020/04/21(火) 23:04:39.20 ID:s3lLVMWt
3桁連番付けただけ.
@echo off & set n=1001
for %%i in (*.txt) do set a=%%i& call :x
goto :eof
:x
ren "%a%" "%n:~1%-%a%" & set /a n+=1
727 :デフォルトの名無しさん:2020/04/21(火) 23:14:39.66 ID:J0u+GdjC
リネームは結構難しい.
リネーム後のファイルが再びリネーム対象となる場合がある.
728 :デフォルトの名無しさん:2020/04/21(火) 23:27:06.64 ID:alPdontK
set N=1000
:LOOP
if "%~1"=="" exit /b
set /a N+=1
ren "%~1" "%N:~-3% %~nx1"
shift
goto :LOOP
729 :デフォルトの名無しさん:2020/04/21(火) 23:28:37.78 ID:s3lLVMWt
リネーム後のファイル名が既存だったりするし.
730 :デフォルトの名無しさん:2020/04/21(火) 23:49:32.13 ID:GY5lnYbX
リネームは一覧を一旦ファイルに出力してから回した方が安全だよ.
それとファイル名にUNICODE文字が混ざってる場合も考慮するとバッチファイルではやらん方がいいよ.
vbsかjsかpowershell
731 :724:2020/04/21(火) 23:57:26.74 ID:HADG6GDb
>>724
のRuby では最初に, Dir.glob( "C:/Users/Owner/test/*" )
で, そのフォルダ内のすべてのファイルを取得しているから,
各ファイルを, rename していく途中で,
rename後のファイルを, 再びrenameすることはない.
732 :デフォルトの名無しさん:2020/04/22(水) 00:04:16.90 ID:vEO7RF6u
>>730
ファイル出力というかfor/fでdir出力の取り込みでいいんじゃね?
UNICODE文字は関係あるかね?
733 :デフォルトの名無しさん:2020/04/22(水) 06:52:59.32 ID:gobEj/px
>>721
@echo off & set "n=1001" & set t=tmp_dir
md %t% & for %%i in (*.txt) do set a=%%i& call :x
move %t%\* . > nul & rd %t% & goto :eof
:x
move "%a%" "%t%\%n:~1%-%a%" > nul &
set /a n+=1
tmp_dirの名前は何でもいいが既存の名前を避けてください.
734 :デフォルトの名無しさん:2020/04/22(水) 09:12:13.99 ID:UZ0N9G3p
>>732
>UNICODE文字は関係あるかね?
SJISに含まれてない文字が入ってると酷いことになる.
735 :デフォルトの名無しさん:2020/04/22(水) 10:16:03.76 ID:MJO3kN2U
駄目文字のせいでSJISコードがバグると言うならまだわかるが.
その逆って意味がわからないな.
MSは全くテストしてないってことか.
736 :デフォルトの名無しさん:2020/04/22(水) 11:07:12.34 ID:/W5c3Vma
>>722-735
どうも.
勉強中です.
737 :デフォルトの名無しさん:2020/04/22(水) 11:53:22.55 ID:/W5c3Vma
複数行を一行にまとめる場合は, &でつなぐんでしょうか?
これが改行と同じ意味でしょうかね.
738 :デフォルトの名無しさん:2020/04/22(水) 12:07:17.67 ID:vEO7RF6u
>>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 コードページ変えればいいだけ.
739 :デフォルトの名無しさん:2020/04/22(水) 19:08:42.79 ID:nR8TNEgs
>>737
複数行をまとめるって, ,
文字列の足し算の話?
コマンドを複数行に分割して記述する話?
(継続文字のこと?)
740 :デフォルトの名無しさん:2020/04/22(水) 19:11:46.73 ID:nR8TNEgs
>>739
または複数コマンドを一行で記述する話?
741 :デフォルトの名無しさん:2020/04/22(水) 20:05:53.95 ID:j1ZYXyL3
>>735
コマンドプロンプトは自体はUNICODE対応.
各種コマンドもUNICODE対応.
だけどバッチファイルは過去の互換性が必要なので.
デフォルトではOSの設定(日本語だとSJIS)の文字コードとして使われる.
その設定はchcpで変えることが出来る.
単にコマンド呼び出しをしてるだけならUNICODEとして扱われるが.
forでバッチファイルの世界に招き入れたら,
chcpの設定によって文字コードの変換が行われる.
テストはしてるだろ. この文字コード変換は仕様なので.
バッチファイルでUNICODE文字を扱いたければchcpで.
UTF-8に変更しなければならないというだけのこと.
742 :デフォルトの名無しさん:2020/04/23(木) 06:47:17.74 ID:153+oMoq
>>739
バッチファイルではなくて, 複数行をコマンドプロンプト上で実行したい場合があったりします.
743 :デフォルトの名無しさん:2020/04/23(木) 08:24:04.38 ID:5iduMLE+
>>742
複数行をコピペじゃ駄目なの?
例えば, この内容をメモ帳に記述しておいて.
rem --- ここから ----
dism /online /cleanup-image /restorehealth
sfc /scannow
rem --- ここまで ---
4行をコピペする.
744 :デフォルトの名無しさん:2020/04/23(木) 09:07:36.24 ID:Z6s7Y3Lu
>>742
複数コマンドを1行で実行したいということなら, , ,
A & B ... A実行後にBを実行.
A | B ... Aの実行結果をBに渡して実行.
A && B ... Aが成功したらBを実行.
A || B ... Aが失敗したらBを実行.
長いコマンドを複数行に分割したいなら, , ,
Sentence1 ^<改行>
Sentence2
(サーカムフレックスで継続)
745 :デフォルトの名無しさん:2020/04/23(木) 12:04:05.59 ID:qTwHi2aC
()で囲めばいい.
(timeout /t 300
cd d f:\hoge
for %f in ( *.jpg ) do (
・・・.
)
)
正式名称が何かは知らないが勝手にブロックと呼んでる.
746 :デフォルトの名無しさん:2020/04/23(木) 14:59:02.07 ID:WFX6w8Jo
>>744
そういうのがあるのか, | 以外知らなかった.
747 :デフォルトの名無しさん:2020/04/23(木) 14:59:42.71 ID:WFX6w8Jo
>>745
これも知らなかった.
748 :デフォルトの名無しさん:2020/04/23(木) 15:25:29.03 ID:153+oMoq
>>743コピペでももちろんいいですが, 知っておきたかったです.
749 :デフォルトの名無しさん:2020/04/23(木) 16:03:20.39 ID:eZrYYRVL
なんでバッチ嫌なの?
750 :デフォルトの名無しさん:2020/04/23(木) 17:31:56.25 ID:P2MaiEJS
>>748
だったらこんなところで聞くんじゃなくて.
一次資料に当たる努力をしなよ.
751 :デフォルトの名無しさん:2020/04/23(木) 21:20:47.89 ID:M8I+Acr1
>>745
それ駄目.
遅延変数展開しないと痛い目に遭うよ.
752 :デフォルトの名無しさん:2020/04/26(日) 18:05:24.10 ID:FVxXRtXH
連番をつけるコードでまだ躓いています.
hoge.txt
hogehoge.txt
を.
hoge(1).txt
hogehoge(2).txt
としたいです.
echo off & for %i in (*.txt) do (ren %i ???)
このはてな部分に連番を指定するためにインデックスを指定しないといけないと思うんですが, %i自体にはファイル名が入っていると思います.
インデックスは取れるんでしょうか?
753 :デフォルトの名無しさん:2020/04/26(日) 18:36:58.48 ID:FVxXRtXH
バッチでset /aなどのオプションがありますが, /aは計算を伴う場合に使うそうです.
この/aに意味はあるのですか?
何らかの単語の略だと覚えやすいんですが.
754 :デフォルトの名無しさん:2020/04/26(日) 18:40:50.40 ID:Pfsg7A5O
その程度ぐぐれば出てくるでしょ.
インデックスのカウント用変数が必要+変数の遅延展開.
丸括弧のエスケープが必要.
aはarithmeticの略.
755 :デフォルトの名無しさん:2020/04/26(日) 20:15:42.23 ID:cczyU4e/
@echo off & set n=1& chcp 65001 > nul
for /f "delims="eol^= %%i in ('dir /b *.txt') do
set a=%%i&call :x "%%a%%"
goto :eof
:x
ren %1 "%~n1(%n%)%~x1" & set /a n+=1
756 :デフォルトの名無しさん:2020/04/26(日) 22:00:20.95 ID:zKIVBOto
1Point ノウハウ.
dir ですべてのファイル, フォルダを表示したい場合は.
dir /A
757 :デフォルトの名無しさん:2020/04/26(日) 22:18:32.20 ID:DxwpR+0O
普通に do call :x "%%~i" でいいと思うんだが何故いちいち set a=%%i とかしてるの?
何か理由あるん?
758 :デフォルトの名無しさん:2020/04/26(日) 22:22:15.53 ID:YV1WqKFq
>>757
ファイル名に「%」入ってるとマズくない?
759 :デフォルトの名無しさん:2020/04/28(火) 05:49:29.43 ID:ceHl0duT
シェルスクリプトってお手軽省略表記にこだわりすぎるあまり.
エスケープ処理が複雑化しバグりやすくなって本末転倒だよな.
760 :デフォルトの名無しさん:2020/04/28(火) 05:57:02.60 ID:l2PF55i3
そんなところで躓く能なしは, 他の言語で書いても同じだよ.
761 :デフォルトの名無しさん:2020/04/28(火) 13:01:40.55 ID:DKHJb1hS
他の言語でもエスケープは必要なことはあるし同じこと.
ただbatのように自身を置換して逐次実行するするようなことは.
eval系の命令を使う場合なのでほぼ無いに等しいので意識されないだけ.
762 :デフォルトの名無しさん:2020/04/28(火) 16:44:00.76 ID:3RXW9/E3
要するに分かりにくい.
ここで初心者にイロハから質問されてもレスがしにくい.
リネームソフトでも使え.
763 :デフォルトの名無しさん:2020/04/28(火) 17:37:46.72 ID:7TaGv6sC
>>759
シェルスクリプトでエスケープ処理が複雑なんて.
したことがないんだがどういうケース?
むしろバッチファイルのほうがややこしすぎる.
バッチファイルでダブルクォートはいつつけるか言える?
スペースが含まれたファイル名とか.
バッチファイルでこれの出力結果は.
echo "C:\Program Files"
[下矢印]これです. (ダブルクォート含む)
"C:\Program Files"
764 :デフォルトの名無しさん:2020/04/28(火) 18:05:03.26 ID:3RXW9/E3
どういうケースって, すぐ上の奴だろ.
765 :デフォルトの名無しさん:2020/04/28(火) 18:18:07.54 ID:7TaGv6sC
>>764
もしかしてバッチファイルとシェルスクリプトの違いわかってないの?
766 :デフォルトの名無しさん:2020/04/28(火) 18:19:14.04 ID:7TaGv6sC
シェルスクリプトっていうのはUnixやLinuxの.
/bin/shとかbashのことなんだが.
767 :デフォルトの名無しさん:2020/04/28(火) 18:20:52.04 ID:RB8xSOb3
ファイル数わからんけどリネームソフト使えば一分かからんで終了.
768 :デフォルトの名無しさん:2020/04/28(火) 20:35:28.46 ID:C/yTg51l
>>766
俺の定義ではバッチファイルはシェルスクリプトだ.
config.sysに.
shell=command.com /e:1024
とか書いてたからな.
769 :デフォルトの名無しさん:2020/04/28(火) 20:39:22.04 ID:C/yTg51l
ちなみにMS-DOSにはエスケープ文字なんて無い.
770 :デフォルトの名無しさん:2020/04/28(火) 20:40:45.75 ID:f4hk4dsD
>>768
意味わかんないから調べたが,
今では全く通用しない話じゃねーかよ.
てめーの定義を押し付けんな.
771 :デフォルトの名無しさん:2020/04/28(火) 20:51:25.37 ID:l2PF55i3
>>770
頑張ってググってきたんだからほめてやれよ.
772 :デフォルトの名無しさん:2020/04/28(火) 22:38:03.31 ID:0mXw36Cx
>>769
Delims句でイコールを区切り文字にしたいときはサーカムフレックスでエスケープする必要があるときがあるけどね.
773 :デフォルトの名無しさん:2020/04/28(火) 23:55:09.09 ID:3RXW9/E3
cmdはシェルだ. 定義も糞もない.
774 :デフォルトの名無しさん:2020/04/29(水) 00:05:03.59 ID:kLiglYQz
>>768
cmdじゃないじゃん.
775 :デフォルトの名無しさん:2020/04/29(水) 06:34:57.98 ID:bLWOmnfL
UNIXとかでshやbashがログインシェルとかインタラクティブシェルになるのと同じだよ.
shやbash=cmd
シェルスクリプト=バッチファイル.
シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前.
776 :デフォルトの名無しさん:2020/04/29(水) 06:56:52.10 ID:SXZJio07
とはいえ逆にunixでバッチがどうとか言うと違和感あるしな.
>>766みたいな感覚が一般的.
777 :デフォルトの名無しさん:2020/04/29(水) 07:15:11.82 ID:sus1L+2H
>>775
> シェアが段違いのWindowsのバッチファイルがシェルスクリプトよりずっと複雑なのは当たり前.
シェアならLinuxのシェルスクリプトの方が多いよ.
今はsystemdに置き換えられつつあるが, 起動処理の多くで.
シェルスクリプトが使われていた.
各アプリのビルドなどでもシェルスクリプトは使われている.
それに対してバッチファイルは殆ど使われていない.
そもそもWindowsのコマンドは, 他のコマンドの出力を読み取って.
別のコマンドで処理するように設計されていない.
単に呼び出すだけ. だからバッチファイルという名前になってる.
例えばcopyコマンドであってもシェルスクリプトであれば, コピーが正常に終了した場合.
なにも表示されないのでスクリプトとして使いやすいが.
Windowsのcopyは人間用のメッセージがいちいち出る.
コマンドの出力を変数に入れるだけでも大変.
遅延環境変数の展開を使わなければ変数の中にメタ文字的なものが入るだけで簡単に壊れる.
そもそもの設計思想がスクリプトを組むためではなく, 単にコマンドを並べるという使い方を.
するためだからバッチファイルはシェルスクリプトだけでなく.
PowerShellスクリプトやVBScriptよりも使いづらくなってしまっている.
一方, PowerShellスクリプトやVBScriptはコマンドをよびだすのが.
面倒になってるので両立してるシェルスクリプトにはかなわない.
778 :デフォルトの名無しさん:2020/04/29(水) 07:22:12.44 ID:VzuV0Enx
アスペがうだうだ言ってるだけで全く「会話」が進行していないな.
779 :デフォルトの名無しさん:2020/04/29(水) 07:36:25.95 ID:SXZJio07
スレチだから, もうやめろ.
780 :デフォルトの名無しさん:2020/04/29(水) 07:51:09.96 ID:sus1L+2H
やなコッタ.
781 :デフォルトの名無しさん:2020/04/29(水) 22:15:38.24 ID:f6LPbIhG
パンナコッタ.
782 :デフォルトの名無しさん:2020/04/29(水) 22:43:10.94 ID:sus1L+2H
メロンパンナ.
783 :デフォルトの名無しさん:2020/04/30(木) 00:25:02.17 ID:6g7fIyNp
マンコッタ茶園のアッサムティーをすすりながら仕事するのが何よりの贅沢.
784 :デフォルトの名無しさん:2020/04/30(木) 23:56:54.10 ID:4NDFLh29
アッサムティー好き, いいよね.
785 :デフォルトの名無しさん:2020/05/01(金) 20:45:42.45 ID:I+dUmCMk
カタコッタ.
786 :デフォルトの名無しさん:2020/05/07(木) 18:46:37.87 ID:jiFNKMfo
滅茶苦茶初歩的な質問ですまん.
バッチファイルからPythonスクリプト実行してPythonスクリプト側でprintした文字列をバッチファイル側で取得する方法ってある?
787 :デフォルトの名無しさん:2020/05/07(木) 18:51:16.63 ID:cw3NlGJG
FOR /F ["オプション"] %変数 IN ('コマンド') DO コマンド [コマンド パラメーター]
または usebackq オプションの場合:
FOR /F ["オプション"] %変数 IN (`コマンド`) DO コマンド [コマンド パラメーター]
788 :デフォルトの名無しさん:2020/05/07(木) 18:51:30.99 ID:jiFNKMfo
もしくはコマンドプロンプトに出力された文字列を出所問わず取得したい.
789 :デフォルトの名無しさん:2020/05/07(木) 19:01:03.56 ID:jiFNKMfo
>>787 ありがとう, いけたわ.
logzero使ってるライブラリでこれやろうとすると途中で処理が止まるけど, これは他の問題かもしれんな.
790 :デフォルトの名無しさん:2020/05/07(木) 19:33:24.65 ID:lct9jPsZ
昔だったら tail -f
791 :デフォルトの名無しさん:2020/05/07(木) 19:34:28.15 ID:2gF3mugX
>>789
標準出力じゃなくて, 標準エラー出力の方にprintしてるんだろ.
('py foo.py 2^>^&1')
792 :デフォルトの名無しさん:2020/05/07(木) 19:47:29.96 ID:jiFNKMfo
logzeroさらっと調べても設定全く分からんので今回は該当部分の出力だけlogzero.infoからprintにして無駄な出力を省いた.
出力取得できたのでまあよし.
793 :デフォルトの名無しさん:2020/05/07(木) 20:17:47.30 ID:2gF3mugX
>>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
794 :デフォルトの名無しさん:2020/05/12(火) 09:27:08.95 ID:hWMQZbFi
>コマンドプロンプト入門 Kindle版.
2020年にこれを出すとはチャレンジャーすぎるな.
795 :デフォルトの名無しさん:2020/05/12(火) 16:03:14.69 ID:PeLhefIP
amazonで, 確認すると, 2019/09の出版みたいですね.
どうせなら, power shellの本出したほうが良かったかも.
796 :デフォルトの名無しさん:2020/05/12(火) 18:45:23.48 ID:NJ7uTfC9
ファイル名に「b」を含むファイルをコピーするときに.
たとえば.
abc.txt というファイルがあって.
copy *b*.txt def.txt
がオッケーで.
copy *b* def.txt
がエラーなのはなぜですか?
*は0文字以上の文字列なので.
両方とも成功すると思っていたのですが.
797 :デフォルトの名無しさん:2020/05/12(火) 19:05:09.66 ID:fhydWmjd
>>795
KindleストアにPowerShellのがいっぱいあるやん.
798 :デフォルトの名無しさん:2020/05/12(火) 19:55:35.27 ID:UaCqmgBQ
>>796
普通にできるけどどんなエラーが出るの?
ちなみにその書き方だと *a* が複数ある時は連結されてしまうけどな.
799 :デフォルトの名無しさん:2020/05/12(火) 19:59:26.87 ID:fhydWmjd
*b* が一つでもゴミが付くしね(0x1A)
800 :デフォルトの名無しさん:2020/05/23(土) 20:41:18.51 ID:H5g1ckea
Windows Terminal で音を鳴らすにはどうすればいいですか.
コマンドプロンプトではControl-Gを出力してたんですが.
Windows Terminalでは無視してくれやがります.
801 :デフォルトの名無しさん:2020/05/23(土) 22:23:07.24 ID:105ldQbQ
start beep.wav
802 :デフォルトの名無しさん:2020/05/23(土) 22:45:59.81 ID:H5g1ckea
そんなんだったら.
>copy con beep.cmd
echo ^G
waitfor /T 3 waiting
^Z
1 個のファイルをコピーしました.
>start /min cmd /d/c beep.cmd
とするけどもっといい手はないかなと.
803 :デフォルトの名無しさん:2020/05/23(土) 23:00:15.85 ID:H5g1ckea
ああstartで自分を呼んで鳴らせばいいんだ.
自己解決しました.
804 :デフォルトの名無しさん:2020/05/24(日) 00:25:04.68 ID:VYuvM9gt
>>802
echo ^G>beep.dat
としておいて.
type beep.dat
beep.dat は 0x07 (1byte)だけ.
805 :デフォルトの名無しさん:2020/05/24(日) 00:40:12.55 ID:f4O9jhZ+
その手がWindows Terminalでは使えないって話.
https://aka.ms/terminal-documentation
Windows ターミナルの概要 | Microsoft Docs
806 :デフォルトの名無しさん:2020/05/24(日) 00:46:46.59 ID:VYuvM9gt
>>805
そうでしたか.
Windows Terminal, 使うか.
807 :デフォルトの名無しさん:2020/06/03(水) 20:30:01.66 ID:HabAm56l
バッチでやるような処理でも.
勉強兼ねてpowershell使って処理するようにしたほうがいいですか?
808 :デフォルトの名無しさん:2020/06/03(水) 20:31:25.42 ID:5eIQQTQm
勉強でなら, そりゃそうだろと言うしかないね.
809 :デフォルトの名無しさん:2020/06/03(水) 20:32:34.71 ID:HabAm56l
実務上はどうです?
バッチの方が情報多いからいいんですか?
810 :デフォルトの名無しさん:2020/06/03(水) 21:04:50.01 ID:mm84GRB0
>>809
どういう現場か知らないけど.
Widn7 SP1 PSv2 縛り.
なんて現場でPS書きたいとか思わないね.
使わせてくれる現場なら使うべきだし, そうでないならバッチをシコシコ書くしかないのよ.
811 :デフォルトの名無しさん:2020/06/03(水) 21:27:53.38 ID:QZ+HyrOs
シコシコかくのよ.
812 :デフォルトの名無しさん:2020/06/03(水) 22:11:19.84 ID:JNM2fzED
PSでできること=C#でできることだからバッチとは全然できることが違うよ.
PSv2でも十分バッチとは天地の差がある.
813 :デフォルトの名無しさん:2020/06/03(水) 22:22:36.62 ID:5eIQQTQm
元の質問が, 「バッチでやるような処理でも」なんだけどな.
ちゃんと読んでるか?
814 :デフォルトの名無しさん:2020/06/03(水) 23:24:38.53 ID:Gm6SBE/O
>>809
情報量ならPowerShellの方が上だし.
TechnetフォーラムならPowerShellのカテゴリーあるし.
ポケットリファレンスの著者である牟田口大介まで出没している.
ストアアプリのインストールとかはPowerShell必須だし.
バッチのみじゃ書けない物も割と多い.
処理の内容は忘れたけどバッチでやれた事を.
PowerShellで書いたらキー入力を要求されて.
かえってバッチの方が良かった場合もあるけど.
そんなパターンは圧倒的に少ないと思う.
でもウチの場合, PowerShell使いがいないから.
というのが最大の理由で実務はバッチだらけ.
良いか悪いかならきちんとメンテナンスが出来る物が良いであるべき.
個人の感想ならばPowerShellって.
バージョンが上がって非互換が出そうなので避けたい.
815 :デフォルトの名無しさん:2020/06/04(木) 09:41:35.56 ID:Di3Z81qX
9x系(95/98/Me)のWindows用MS-DOSプロンプトとNT系(それ以外)のWindows用コマンド・プロンプトの違いさえ.
意識していれば, バッチファイルの利用は難しくないと思う.
VBScript(WSHことWindows Script Host)の場合は9x系とNT系に関係なく, WSHバージョン5.1以降かどうかさえ.
気をつけていれば概ね大丈夫だと思う.
それらに比べてPowerShellは, 個人的にはハードルが極めて高い.
816 :デフォルトの名無しさん:2020/06/04(木) 15:05:12.56 ID:iofqxoab
>>813
当然「バッチでやるような処理でも」PSなら十二分にこなせるよ.
このスレで話題になるような変なクセや制限もないしね.
817 :デフォルトの名無しさん:2020/06/04(木) 15:12:12.70 ID:iofqxoab
>>814
PSはバージョン指定(-vオプション)すればそのバージョンが実行される仕組みを持ってるから互換性についてもある程度クリーンだよ.
818 :デフォルトの名無しさん:2020/06/04(木) 15:16:33.10 ID:efimIni8
BATの典型的なものとしては.
シーケンシャルに.
・外部アプリ呼び出し.
・ファイルコピーや移動.
・メッセージ表示.
であって, こんなものをPowerShellで書く必要は無いし, ステップ数も余分にいる.
819 :デフォルトの名無しさん:2020/06/04(木) 21:18:27.58 ID:U7KCPoET
PSの話したいなら該当スレへ.
ここでするのはスレチ.
820 :デフォルトの名無しさん:2020/06/05(金) 09:26:58.17 ID:YNSaAEsR
バッチファイル内で, 複数の文字列の一部だけを羅列して, それをまとめて補完したものを変数に入れたい.
具体的には.
set LOGFILES=%LOG%\tech\*.dat %LOG%\prog\*.dat %LOG%\win\*.dat
%LOG%\newsplus\*.dat...
のように指定するのではなく.
setlocal enabledelayed...
for %%f in (tech prog win newsplus) do (
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
)
のようにして, 増減や修正を簡単に出来るようにしたい.
したいんだけど, なんかうまく動いてくれない.
何かヒントもらえますか?
821 :デフォルトの名無しさん:2020/06/05(金) 10:14:13.82 ID:YNSaAEsR
自己解決.
どうやらこんな感じで動きそう.
for %%f in (tech prog win newsplus) do (
call :APPEND %%f
)
:APPEND
set LOGFILES=%LOGFILES% %LOG%\%%f\*.dat
goto :EOF
822 :デフォルトの名無しさん:2020/06/05(金) 11:33:35.77 ID:xkF+o6Lc
>>820
setlocal enabledelayedexpansion
for %%f in (tech prog win newsplus) do (
set LOGFILES=!LOGFILES! %LOG%\%%f\*.dat
)
じゃダメなの?
823 :デフォルトの名無しさん:2020/06/05(金) 11:53:35.34 ID:YNSaAEsR
あれ?出来ますね.
実は!で囲むのもやってみた(つもりだった)んだけど.
(たぶん, どっか別のちょっとしたところでミスしてて)
その時はうまく動かなかったんですね.
失礼しました.
824 :810:2020/06/06(土) 00:36:10.94 ID:ZNTMwsEj
>>817
業務システムのくせに -v の無いPSスクリプトを Win7 上で動かしてるクソシステム, あるよ.
改修したくもないけど.
PS は ver.3 で破壊的変更がなされたから, ver.2 に合わせて勉強するだけ無駄だと言われている.
core になって COM も切られたから Word や Excel ファイルへのアクセスも今後どーなんの?的な段階.
また, PS が「管理の自動化」を目指しているのに対して, バッチや WSH は「一般ユーザーの定型操作の自動化」を目指しているから方向性自体が違う.
おまけにバッチとWSHはもう仕様変更が無いという強みがある.
等価なものを個人的に PS でリライトしてみる, はいいと思うけど, 本番環境に入れるのはNGかな・・・.
825 :デフォルトの名無しさん:2020/06/09(火) 07:37:38.68 ID:xQo5RGeQ
長々と更新してもcmd変わらず放置.
不具合あればPS使えということか.
バッチに未来は無い.
826 :デフォルトの名無しさん:2020/06/09(火) 21:59:44.80 ID:Phlj4K/L
cmdはもう更新しないってアナウンス出てなかったっけ?
827 :デフォルトの名無しさん:2020/06/09(火) 22:16:29.17 ID:aAgqnyde
バッチ処理って簡単な定時処理に使ってる人がほとんどだろうし.
現状維持でこのまま使えたらそれでいいよ.
828 :デフォルトの名無しさん:2020/06/14(日) 08:05:01.57 ID:Nip9LUw0
教えてください.
引数以外でショートカットの情報をバッチに渡すことはできますか?
バッチ自体のファイル名, パス名を取得する方法はよく見かけますが, ,
ショートカットのファイル名や親フォルダの情報をバッチに渡す手段ってやっぱりないですかね?
829 :デフォルトの名無しさん:2020/06/14(日) 10:09:40.34 ID:Rvue1P4U
ショートカットって何の?起動したバッチファイルのもの?
ショトカ自体は dir *.lnk で取れるけど複数あると特定は面倒臭かったり無理かも.
どのlnkからバッチが起動されたか?は作業ディレクトリがそのlnkと同じだとか限定条件下でないと無理じゃないかな.
830 :デフォルトの名無しさん:2020/06/14(日) 10:41:39.28 ID:Nip9LUw0
>>829
やっぱり無理そうですね.
ショートカットのファイル名をショートカットのコマンドラインに渡してバッチに引き渡そうと企んだのですが, , ,
%0とか%~dp0とか記述しても記述そのままで%1に渡るだけでした.
何か方法ないのかなと思い, , あきらめます.
ご回答ありがとうございます.
831 :デフォルトの名無しさん:2020/06/14(日) 11:24:19.06 ID:2FaHAA2B
ショートカットのプロパティで作業フォルダを弄ればいいだろ.
リンク先のバッチで%cd%参照.
ファイル名なんてリンク先に合わせりゃいいだろ.
832 :デフォルトの名無しさん:2020/06/14(日) 11:26:00.19 ID:Q6c7IGAp
>>830
もしショートカットファイルから元のファイル名を取得したいってことなら.
wmicコマンドとか使えば良いんじゃない?
https://stackoverflow.com/a/29650022
833 :デフォルトの名無しさん:2020/06/14(日) 11:45:22.44 ID:2FaHAA2B
プロパティのリンク先に自分のフルパスを追加してもいい.
リンク先のバッチで%1参照.
834 :デフォルトの名無しさん:2020/06/14(日) 12:14:20.27 ID:Nip9LUw0
>>831
仰る通り.
それがメンドーだな, と思っただけです.
プロパティ弄らずにファイル名変更だけで挙動変えようかと, , ,
835 :デフォルトの名無しさん:2020/06/14(日) 12:15:45.60 ID:Nip9LUw0
>>832
そういうの, いろいろありますね.
VBSとかPSとか.
後者をSendToに入れてフォルダ内調査に使ったりしてます.
836 :デフォルトの名無しさん:2020/06/14(日) 12:16:13.25 ID:Rvue1P4U
ショートカット名を動的に生成してダブルクリックだけでリンク先のバッチへ引数として渡したいって事なんじゃないの?
ショートカット名を一時ファイル代わりにしたかったんだと思ってたけど.
837 :デフォルトの名無しさん:2020/06/14(日) 12:17:49.77 ID:Nip9LUw0
>>833
プロパティ弄るなら, 素直に引数指定すれば良さそうです.
みなさんご意見ありがとうございます.
838 :デフォルトの名無しさん:2020/06/14(日) 12:18:03.34 ID:2FaHAA2B
作業フォルダを空欄にするだけなんだけど.
839 :デフォルトの名無しさん:2020/06/14(日) 12:20:20.62 ID:Nip9LUw0
>>836
ショートカットを別フォルダにコピーするだけで, そのショートカットの親フォルダをバッチに渡すということをしたかったです.
ただのめんどくさがりです. すみません.
840 :デフォルトの名無しさん:2020/06/14(日) 12:25:13.85 ID:Nip9LUw0
ショートカットの代わりにバッチを呼ぶためのバッチを作ればよいことに今気づきました.
ショートカットのコマンドラインで自分を参照する記述が出来そうもないことも確認できたので収穫でした.
みなさんおつきあい頂きありがとうございます.
841 :デフォルトの名無しさん:2020/06/14(日) 12:32:21.09 ID:Rvue1P4U
>>839
それなら >>838 で可能.
作業フォルダを空欄にしたショートカットを目的のフォルダにコピーしてダブルクリック echo %cd% で取れる.
842 :デフォルトの名無しさん:2020/06/14(日) 12:47:38.30 ID:zWNqxiy9
別フォルダにコピーする時点で親フォルダ分かってるんじゃない?
843 :デフォルトの名無しさん:2020/06/14(日) 19:57:43.39 ID:Nip9LUw0
>>841
おおお, なるほど!
StartInを指定しなければ, CurrentDirectoryは移動しないのか.
リンクファイル名の方は無理そうですが, 親フォルダはこれでいけそうです.
感謝!!
VBAのApplication.Callerみたいなのが書ければいいんですけどね.
844 :デフォルトの名無しさん:2020/06/14(日) 20:09:16.72 ID:2FaHAA2B
作業フォルダが空だと他所のフォルダからD&Dしたらそっちになるけどな.
あと, 管理者権限で実行したらC:\WINDOWS\system32になったりする.
845 :デフォルトの名無しさん:2020/06/14(日) 20:15:00.02 ID:Nip9LUw0
>>844
そうなりますね. 気をつけます.
846 :デフォルトの名無しさん:2020/06/14(日) 21:58:02.09 ID:Nip9LUw0
すみません. もう1つ質問です.
バッチ自身を最小化して起動するときどうされてますか?
これが理由の1つでショートカット起動していたのですが, 代わりにバッチを使うとコンソールが表示されてしまいます.
サイトでよく見かける, @If not "%~0"... というやつは, Win7のためか機能しません.
普段は固定的に行う場合は, ショートカットやVBSをはさみ最小化実行しているのですが, ,
うまい方法があれば教えてください.
847 :デフォルトの名無しさん:2020/06/15(月) 14:19:29.38 ID:YYrFY+5A
無い.
848 :デフォルトの名無しさん:2020/06/15(月) 19:14:00.08 ID:X3dRtIQ2
>>847
了解!
849 :デフォルトの名無しさん:2020/06/15(月) 19:21:32.94 ID:bzzr0fEY
start
850 :デフォルトの名無しさん:2020/06/15(月) 21:31:09.57 ID:xZsc1Mf0
pause
851 :デフォルトの名無しさん:2020/06/16(火) 06:44:47.17 ID:zfRgO9so
PowerShell なら,
# ショートカットファイルのフルパス.
$fn = "フルパス"
# ショートカットファイル(.lnk)から, リンク先パス(TargetPath)を読み取る.
$link = $wsh.CreateShortcut( $fn )
# 画面に表示する.
Write-Host "$( $fn )`nTargetFile: $( $link.TargetPath
)"
852 :851:2020/06/16(火) 06:47:46.73 ID:zfRgO9so
>>851
修正.
一番上に, これを入れて.
$wsh = New-Object -ComObject WScript.Shell
853 :デフォルトの名無しさん:2020/06/16(火) 09:13:19.74 ID:n71ojSL1
wsh呼び出すならvbsでも使えばいいわけで・・・.
854 :デフォルトの名無しさん:2020/06/16(火) 15:49:55.53 ID:0FicG8jZ
リンク先バッチ本体をコピーしたらあかんの?
855 :デフォルトの名無しさん:2020/06/16(火) 16:06:26.98 ID:0FicG8jZ
動的に変化するのか?
856 :デフォルトの名無しさん:2020/06/16(火) 22:29:49.48 ID:woSalLPH
>>851
あれ, まだ続いてましたね.
えーと, リンクファイルの情報を取得するのではなくて, リンク先からリンク元を取得できないか, という相談でした.
結論としては, .LnkのStartInをクリアすることでBatch側から%CD%にて.Lnkの親フォルダは取得可能だが,
.Lnkのファイル名を取得する手段はない, と認識しました.
もしかして, PowerShellなら取得できますか?
857 :デフォルトの名無しさん:2020/06/16(火) 22:38:20.68 ID:woSalLPH
>>854
Batchを複製すればできますね.
でも仕様を変更したくなったときばらまいたBatchをすべてメンテするのがメンドーなので設計は1カ所にしておきたい.
ショートカットファイルだとリンク先からリンク元のファイル名を取得できない (Pathは取得可)のでこれを別のバッチで代用すれば対応できる.
(現時点, これで代用してます)
でもこんどは起動がショートカットからBatchに変更されたことで最小化起動ができなくなった.
で, バッチを最小化で生起動する方法は, , 無い!という結論です.
というところで諦めています.
858 :デフォルトの名無しさん:2020/06/16(火) 23:14:22.53 ID:yH2E1+y3
おまえ要領を得ないって良く言われるだろ.
何を最小化したいの?コンソール画面?バッチから起動したアプリ?
アプリ起動にバッチを介するようになって困っているようだけど.
コンソールはすぐ消えるから大して困らんでしょ.
その一瞬も困るってこと?
コンソールならバッチへのショートカットのプロパティに[実行時の大きさ]
アプリならstart /min
そのバッチを貼れない理由でもあるの?
859 :デフォルトの名無しさん:2020/06/16(火) 23:24:30.52 ID:C/0BZ8DU
そんなへんなことするようなものは俺なら要らんと言うな.
説明書に手順を書くなり, 起動用のps1やvbsでも同梱しとけばいいと思う.
860 :デフォルトの名無しさん:2020/06/16(火) 23:48:59.36 ID:zfRgO9so
漏れなんか, ダブルクリックで, Ruby スクリプトを実行するために,
test.vbs に, 起動部分だけを書いてる.
CreateObject("WScript.Shell").Run "ruby .\script.rb",0
861 :デフォルトの名無しさん:2020/06/17(水) 02:23:38.88 ID:1C8hVY+b
もうやめろ. くだらねえ.
862 :デフォルトの名無しさん:2020/06/17(水) 03:27:41.75 ID:pABU+G65
だから結論はでた, 諦めてると言ってるだろ.
返してくれた方がいたので返答しただけ.
ただ一瞬コンソールが表示される挙動がきっちゃないからキライってだけ.
はい, 本件Close.
有用な情報提供いただいた皆さんありがとう.
863 :デフォルトの名無しさん:2020/06/17(水) 07:10:17.14 ID:jbUYdqRV
よくわからんけど start /b /min を使うのではだめなのかしら.
と独り言.
864 :デフォルトの名無しさん:2020/06/17(水) 08:16:21.96 ID:tu0J1xQb
>>863
/bスイッチって何でしたっけ?
865 :デフォルトの名無しさん:2020/06/18(木) 03:29:25.23 ID:00is865e
>>858
>その一瞬も困るってこと?
悪いことしたい時に, それでは困るよね?
866 :デフォルトの名無しさん:2020/06/18(木) 07:09:08.15 ID:EpKOfb9E
>>865
単なる気分の問題.
本件はクローズ. 皆さんありがとうね.
867 :デフォルトの名無しさん:2020/06/18(木) 15:00:22.59 ID:L9lBZl+g
そんな自己満足でひとりよがりなものを配布したりして欲しくはないかな.
868 :デフォルトの名無しさん:2020/06/18(木) 20:51:24.52 ID:sqKtSFf3
ここまでの流れで誰も配布するなんて話してないのにお前は何を言ってるんだ?
866の好きにさせとけよ.
869 :デフォルトの名無しさん:2020/06/18(木) 22:53:59.19 ID:EpKOfb9E
>>868
はい, 自分用です. ご安心を.
中身もつまらない小物ツールですので.
技術的な情報が知りたかっただけです.
また教えてください.
870 :デフォルトの名無しさん:2020/06/19(金) 00:05:08.15 ID:HgOFevSP
クローズしたそうだが.
コンソール画面を見たくないのなら.
レイアウトの位置を右下に詰めろ.
ほとんど見えなくなるぞ.
871 :デフォルトの名無しさん:2020/06/19(金) 00:27:18.52 ID:TPV7TWbz
殆どじゃダメなんだよ.
神経質な奴に見つけられてしまう.
872 :デフォルトの名無しさん:2020/06/19(金) 00:33:46.55 ID:HgOFevSP
お前, 質問者か?
873 :デフォルトの名無しさん:2020/06/19(金) 03:17:24.40 ID:7A38Sw4m
テキストファイルから空行を除く方法.
findstr /R .
ただし空白やタブのある空行は失敗.
874 :デフォルトの名無しさん:2020/06/19(金) 05:11:07.46 ID:HgOFevSP
>>873
タブやスペースだけの行をスキップするには.
findstr /r /c:"[^ ]"
^と]の間にタブとスペース入力.
バッチではエディタでタブ入力できるが.
コマンドプロンプトでタブ入力するには cmd /f:off で.
875 :デフォルトの名無しさん:2020/06/19(金) 05:34:11.61 ID:HgOFevSP
for~do~echoでやった方がいいかも.
876 :デフォルトの名無しさん:2020/06/27(土) 20:08:23.94 ID:dZCme2QN
テキストファイルに入ってる文字列を.
一行ごとに読み込んで.
フォルダを作るバッチをつくったのですが.
半角スペースの文字列が分割されてしまいます.
これって対応策ありますか?
877 :デフォルトの名無しさん:2020/06/27(土) 20:23:13.74 ID:7ozUCHmg
>>876
for /f "tokens=*" %%i in (data.txt) do md "%%~i"
878 :デフォルトの名無しさん:2020/06/28(日) 21:21:38.87 ID:elMokmc1
>>877
できたサンクス.
助かった.
879 :デフォルトの名無しさん:2020/06/30(火) 15:01:18.03 ID:SwuJ9TNP
ファイル名全角英字の大文字小文字を同じとみなしていた.
A.txt に他フォルダのa.txtを上書きコピーしてもA, txtのままだった.
Aaは全角英字.
芸が細かい, いいか悪いかは別として.
880 :デフォルトの名無しさん:2020/06/30(火) 19:03:57.21 ID:PSeL/c0z
ワイルドカードの ? の仕様がイマイチ分からない.
abc と abc1 のファイルがあったとして.
>dir /b abc?
abc
abc1
>dir /b ?abc
ファイルが見つかりません.
>dir /b a?bc
ファイルが見つかりません.
なぜ見つからないのか.
1ないし0個の文字じゃないのか.
881 :デフォルトの名無しさん:2020/06/30(火) 19:07:42.99 ID:/pl8PJcc
ワイルドカードで?は任意の1文字を示す.
882 :デフォルトの名無しさん:2020/06/30(火) 19:14:29.14 ID:PSeL/c0z
では abc? で abc が一致するのはなぜ.
883 :デフォルトの名無しさん:2020/06/30(火) 19:19:02.81 ID:/pl8PJcc
abc.でマッチするからだと思う.
884 :デフォルトの名無しさん:2020/06/30(火) 19:21:41.87 ID:PSeL/c0z
なるほど. ありがとう.
885 :デフォルトの名無しさん:2020/06/30(火) 19:28:18.05 ID:PSeL/c0z
abc?? や abc??? でも一致するようだ.
886 :デフォルトの名無しさん:2020/06/30(火) 19:49:40.78 ID:tIigavUn
https://www.pg-fl.jp/program/dos/doscmd/str_wildcard.htm
http://kayuitoko.blog129.fc2.com/blog-entry-2.html
887 :デフォルトの名無しさん:2020/06/30(火) 19:59:31.31 ID:PSeL/c0z
abc??.?? とかも一致するね. たぶん仕様というよりバグ.
888 :デフォルトの名無しさん:2020/06/30(火) 21:39:19.92 ID:clO9Gt1K
ピリオドが絡むとワイルドカードはおかしな動きするよ.
filename_yyyy.mm.dd.dat
みたいなもんが.
dir *_????.??.??.dat
で引っかからない. >>887 の言う通り, 多分バグ. ピリオド以降を拡張子とみなすみたい.
filename_yyyy-mm-dd.dat
として.
dir *_????-??-??.dat
だとちゃんと引っかかるから, 俺はファイル名に日付を付けるなら - を使っている.
889 :デフォルトの名無しさん:2020/07/01(水) 07:22:43.96 ID:sbIkpZ+y
ワイルドカードは色々とおかしい.
>echo > "abc" & echo > " abc"
>for %i in ("abc*") do @echo "%i"
"abc"
" abc"
890 :デフォルトの名無しさん:2020/07/01(水) 07:57:25.88 ID:9hqgfVHi
そっちはたぶん8.3形式が引っかかってるんだろう.
891 :デフォルトの名無しさん:2020/07/04(土) 22:02:55.18 ID:r0U5W+Xd
PC初心者です.
初めてバッチファイルの作成にチャレンジしています.
ドライブ(丸ごと)->別のドライブのフォルダ, にバックアップを取りたくてrobocopyを使ってミラーコピーをしました.
コピーはうまくいくのですが, コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます.
これはなぜでしょうか?回避方法はありますか?
892 :デフォルトの名無しさん:2020/07/04(土) 22:37:12.45 ID:KIcU78VY
>>891
ggrks
893 :デフォルトの名無しさん:2020/07/04(土) 22:39:29.92 ID:QUXtQ3do
たぶん, A ファイルがあって, それを上書きする時に,
安全確保のために一旦, 別のフォルダ・Recovery へコピーしてから, 上書きして,
正常に上書きした後に, Recovery内のA を削除している.
ただ, すべて正常に済んだ後に, Recoveryフォルダを削除し忘れているのだろう.
894 :891:2020/07/05(日) 11:17:14.37 ID:eLIuBas1
>>893
ありがとうございます.
バックアップ自体は問題なさそうなので, このままで使ってみようと思います.
895 :デフォルトの名無しさん:2020/07/05(日) 15:06:46.22 ID:1amJ61U+
>>893
>>894
コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの.
ドライブを丸ごと robocopy すると強制的に SH 属性が付くから, 最後に attrib -S -H してやる必要があるし,
>>894
はそれをしてると思う.
そしたら「Recovery」が見えるようになった, というだけの話でしょ・・・これ.
コピー元のルートディレクトリに行って「dir /a」して確認してみ?
896 :891:2020/07/07(火) 00:32:35.56 ID:TndHy5rX
>>895
「dir /a」して確認してみたところ, 仰る通りでした!「Recovery」フォルダは不要なので削除しました.
有難うございました!
897 :デフォルトの名無しさん:2020/07/08(水) 04:28:57.30 ID:lPT19RKJ
超初歩的な質問いいですか?
(1.)https://i.imgur.com/hyYJbJE.png
(2.)https://i.imgur.com/REf3PXQ.png
(3.)https://i.imgur.com/UIqO0ye.png
(1.)のCというフォルダを中にある1.txt 2.txtごと(2.)にコピーして(3.)のようにしたい時, どう入力したらいいですか?
すでに(3.)のような状態にある時もコピーして上書きしたいのですが.
ググれって言われるのはわかってますが, ディレクトリがどうのこうのとか,
robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので.
898 :デフォルトの名無しさん:2020/07/08(水) 04:57:01.58 ID:xPuqy2ih
>>897
せめて, 何を試してうまく行かなかった, とか試行錯誤の具体的な.
過程があれば説明, 答えを教えてくれるひとがいるかも.
899 :デフォルトの名無しさん:2020/07/08(水) 05:13:48.40 ID:H59ZusVp
>>897
普通にcopy使えよ.
900 :デフォルトの名無しさん:2020/07/08(水) 05:29:09.34 ID:plYM8yLW
>>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
901 :デフォルトの名無しさん:2020/07/08(水) 05:44:34.05 ID:lPT19RKJ
>>900
どうもありがとうございました.
自分でも色々やって試しててうまくいかず質問したのですが,
原因が保存した文字コードがUTF-8だったためでした.
ANSIに変えたらうまくいきました.
902 :デフォルトの名無しさん:2020/07/08(水) 11:29:53.61 ID:Z8A6jaoN
xcopy よりは, robocopy を使った方が良いのでは?
xcopyは, あまり見ない.
903 :デフォルトの名無しさん:2020/07/08(水) 12:24:18.71 ID:lp5P2pBO
dosで使えなくなるだろ.
904 :デフォルトの名無しさん:2020/07/08(水) 12:46:00.57 ID:Lb+zauke
たしかに, DOSは, Xcopyまでだったか.
pureDOSには, robocopyはないのだな.
905 :デフォルトの名無しさん:2020/07/08(水) 12:56:46.06 ID:plYM8yLW
robocopyは絶望的に遅い.
複雑な条件がないのならxcopyがいい.
906 :デフォルトの名無しさん:2020/07/08(水) 15:01:55.81 ID:z330e5aM
robocopyは, ミラーリングで使用したときに,
消される側にフォルダのシンボリックリンクがあると,
リンク先実体フォルダ内のファイルごと消されるというバグが有る.
/xjd /xjf /xj /sl 全部ダメ.
怖くて使えない.
907 :デフォルトの名無しさん:2020/07/08(水) 18:21:45.08 ID:ebRsk5Wi
ま?
908 :895:2020/07/08(水) 19:29:53.78 ID:fFkGRU4d
>>896
空なら大丈夫だと思うけど, 場合によってはそこに WinRE (Windows 回復環境)が入ることがある.
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ.
909 :デフォルトの名無しさん:2020/07/09(木) 01:19:26.67 ID:oG8bZA2s
http://itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど.
(ファイル名)が見つかりません. って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している.
910 :デフォルトの名無しさん:2020/07/09(木) 02:32:11.02 ID:zMPqHoYq
>>909
先頭のecho off をいったん外して, 変数がどう展開されてるか確認してみたら?
911 :デフォルトの名無しさん:2020/07/09(木) 04:53:54.78 ID:gEWbrPAM
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
912 :デフォルトの名無しさん:2020/07/09(木) 06:30:12.62 ID:o2t2WZIU
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
913 :デフォルトの名無しさん:2020/07/09(木) 06:31:35.37 ID:o2t2WZIU
ああ LastAccessTimeじゃくてLastWriteTime
914 :デフォルトの名無しさん:2020/07/09(木) 13:30:39.43 ID:oG8bZA2s
>>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした.
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
915 :デフォルトの名無しさん:2020/07/09(木) 16:17:08.38 ID:t1UM8kjV
>>914
ファイル名に相当する箇所をクオート.
916 :デフォルトの名無しさん:2020/07/15(水) 06:27:24.24 ID:pJbYwVEp
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください.
pはPromptStringかな~と予想してるんですがaは全く見当がつかないです.
917 :デフォルトの名無しさん:2020/07/15(水) 06:51:32.91 ID:73kyB1S/
Arithmetic
918 :デフォルトの名無しさん:2020/07/15(水) 15:46:16.46 ID:nRIpdjFe
if 感染者数==0 (
goto campaign
) else (
goto campaign
)
919 :デフォルトの名無しさん:2020/07/15(水) 21:08:21.69 ID:NpGOzuTH
w.
920 :デフォルトの名無しさん:2020/07/15(水) 22:58:28.42 ID:SqApoBlS
>>916
MSの英語フォーラムとか.
英語版StackOverFlowとか.
Redditとか.
で尋ねたら?英語で.
本当に知りたいなら英語圏に聞け. 英語圏に.
921 :デフォルトの名無しさん:2020/07/15(水) 23:48:35.91 ID:vc+VU4Sj
>>917 が教えてくれてるよ.
922 :デフォルトの名無しさん:2020/07/15(水) 23:53:31.66 ID:SqApoBlS
>>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
923 :デフォルトの名無しさん:2020/07/16(木) 00:26:22.36 ID:3qBZIgLF
/a は 単純に answer かな.
924 :デフォルトの名無しさん:2020/07/16(木) 05:41:06.12 ID:smyagw08
>>923
まじで?
いや普通にarithmeticでしょ. w.
925 :デフォルトの名無しさん:2020/07/16(木) 11:47:24.17 ID:lU9BoPI+
以降あいうえお作文スレ.
926 :デフォルトの名無しさん:2020/07/16(木) 13:33:25.11 ID:d6//+ANU
Arithmeticって+-*/のことじゃないの?
927 :デフォルトの名無しさん:2020/07/17(金) 00:25:33.43 ID:C6Q8EyYV
+とか-はarithmetic operatorだね.
928 :デフォルトの名無しさん:2020/07/18(土) 01:59:17.03 ID:6qVTTMhl
大体は理想通りに出来たのですが時々不要な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
929 :デフォルトの名無しさん:2020/07/18(土) 05:56:42.11 ID:mgWYGhz7
if not "%~1"=="" START "" %1
930 :デフォルトの名無しさん:2020/07/18(土) 08:09:21.26 ID:ddPranTH
if exist "%~1" start "" "%~1"
931 :デフォルトの名無しさん:2020/07/18(土) 08:50:03.50 ID:ddPranTH
for /l %%i in (1, 1, 6) do (if defined TARGET_EXE%%i call :F_NM
"%%TARGET_EXE%%i%%")
932 :デフォルトの名無しさん:2020/07/18(土) 14:36:51.45 ID:4sfyyT7O
>>929->>931
ありがとうございます.
not exist definedの違いなど勉強して盛り込んでみます.
933 :デフォルトの名無しさん:2020/07/18(土) 15:31:48.20 ID:GUFQRDdz
>>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
934 :デフォルトの名無しさん:2020/07/18(土) 15:40:41.02 ID:VVrReUQE
start /?
最初のは "タイトル"
935 :デフォルトの名無しさん:2020/07/18(土) 19:10:23.40 ID:mgWYGhz7
>>933
%1の引用符なしが%~1
だから"%~1"は二重がけではない.
936 :デフォルトの名無しさん:2020/07/18(土) 20:08:37.75 ID:xxg3trOa
"" START ""
に見えたってことなら.
if not "%~1"=="" (
START "" %1
)
こうね.
937 :デフォルトの名無しさん:2020/07/19(日) 00:01:19.79 ID:nPfUu10f
>>933
ちなみに"start"でもダメ.
一般的に内部コマンドは引用符で囲むとエラーになる.
昔はstartが外部コマンドだった時もあったが.
938 :デフォルトの名無しさん:2020/07/19(日) 00:15:51.03 ID:nmSNkapE
>>936
完全にこれでしたすみません.
939 :デフォルトの名無しさん:2020/07/31(金) 20:28:20.67 ID:uhGaPqk6
面白い書き方見付けた.
c:\APP\DoeView>popd
c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview
>nul2>&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]
940 :デフォルトの名無しさん:2020/08/01(土) 00:13:59.61 ID:oGghCVi0
>>939
解説お願いします.
941 :デフォルトの名無しさん:2020/08/01(土) 01:53:16.42 ID:mxUlZpQQ
他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています.
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
・・・.
goto INPUT
こんな感じにしたんですが, コマンドが連続で送られてくると取りこぼしてしまうようです.
何か対策は無いでしょうか?
942 :デフォルトの名無しさん:2020/08/01(土) 06:07:29.27 ID:hnL660kY
他のとやらが標準出力読めるなら.
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか.
943 :デフォルトの名無しさん:2020/08/01(土) 10:06:48.10 ID:KdkXblI6
>>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]を表示してるだけだな.
944 :デフォルトの名無しさん:2020/08/01(土) 15:48:10.34 ID:mxUlZpQQ
>>942
やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません・・・.
やっぱ無理ですかね・・・.
945 :デフォルトの名無しさん:2020/08/01(土) 16:20:21.81 ID:hnL660kY
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に書き出しじゃダメなん?
946 :デフォルトの名無しさん:2020/08/01(土) 17:49:00.41 ID:y/Re9bvj
>>944
実行速度を気にしないゆっくりでいいのなら,
tasklist に実行するプログラムがあれば待機する.
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら.
errorlevelで終わったかそうかわかるかも.
947 :デフォルトの名無しさん:2020/08/01(土) 23:16:08.23 ID:mxUlZpQQ
どうも「相手のプログラム」がイメージしづらいようなので, プログラムそのものを貼ります.
将棋所.
http://shogidokoro.starfree.jp/index.html
USIプロトコル.
http://shogidokoro.starfree.jp/usi.html
USIプロトコル対応の将棋エンジンをバッチファイルで作る, という遊びをしようとしています.
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが,
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず, readyokを返せない,
等でまともに動きません.
デバッグウィンドウからコマンドを送れば一応動きますが・・・.
>>945
一旦txtに出力するのは考えましたが, 具体的な書き方が思いつきません・・・.
将棋所に登録するバッチファイルと, コマンドを処理するバッチファイルの2つに分ける,
とかも考えたんですが, 結局その2つのやり取りをどうすれば良いのか・・・.
948 :デフォルトの名無しさん:2020/08/02(日) 00:01:49.63 ID:SCuZm8dn
>エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります.
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う.
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな.
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか.
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも.
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも.
949 :デフォルトの名無しさん:2020/08/02(日) 00:12:10.36 ID:SCuZm8dn
> setoptionとisreadyが連続で送られてきてisreadyを認識できず, readyokを返せない.
あーこの時点で無理なら厳しいね.
バッファ用としてのプログラムを間に挟まないと.
で, バッファ挟むくらいならどうせなら制御も・・・てなるだろうし.
950 :947:2020/08/02(日) 15:10:30.75 ID:pqbO4ExB
>>949
やっぱそうですか・・・.
残念ですが諦めます.
ありがとうございました.
951 :デフォルトの名無しさん:2020/08/07(金) 17:37:19.06 ID:ztGuRGFM
フォルダが複数あり, フォルダ内の先頭のファイルネームをフォルダ名としたいです.
これを.
フォルダ1
+ファイル1
+ファイル2
フォルダ2
+ファイル1
+ファイル2
こうしたいです.
ファイル1
+ファイル1
+ファイル2
ファイル1
+ファイル1
+ファイル2
フォルダ名が重複した場合の処理も必要かもしれないです.
バッチは読みにくすぎですね.
952 :デフォルトの名無しさん:2020/08/07(金) 22:11:16.88 ID:wnzPeWR5
>>951
そもそもツリー表現が変だと思う.
+フォルダ1
|+ファイル1
|+ファイル2
+フォルダ2
+ファイル1
+ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
953 :デフォルトの名無しさん:2020/08/07(金) 22:17:23.17 ID:5wWI/sIC
>>951
エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど.
それを考慮する必要あるの?
954 :デフォルトの名無しさん:2020/08/08(土) 00:00:00.04 ID:c43C7xo+
for /r %%i in (.)で下位フォルダ名取得.
そのフォルダ内の最初のファイル名を取得(ソート指定)
対象フォルダ名の変更.
もしやるならvbs噛ませると思う.
955 :デフォルトの名無しさん:2020/08/08(土) 05:43:20.34 ID:jNP2OM4q
>>953
とりあえずいらないですが, 名前順で並び替えた場合, 先頭にくるものをフォルダ名としたいです.
956 :デフォルトの名無しさん:2020/08/08(土) 08:06:33.19 ID:ulitZ7VR
>>955
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話.
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
957 :デフォルトの名無しさん:2020/08/08(土) 08:25:04.94 ID:HPaGwZBp
どうでも良いことに拘るアホ.
958 :デフォルトの名無しさん:2020/08/08(土) 09:01:08.32 ID:nLoi7MqI
どうでもいいと言うならテメーがどっちかに決めろや.
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ.
959 :デフォルトの名無しさん:2020/08/08(土) 09:25:59.89 ID:XY4Xe7zO
ところで, 質問者本人は, どちらを・・・・.
960 :デフォルトの名無しさん:2020/08/08(土) 09:32:21.16 ID:d2hZRkL/
仕様を全て決めないと取り掛かれないマヌケ多すぎ.
無能は本筋から外れたところで発狂してろ.
961 :デフォルトの名無しさん:2020/08/08(土) 09:59:17.57 ID:jNP2OM4q
>>956
では今回はエクスプローラ側の並び順がいいです.
962 :デフォルトの名無しさん:2020/08/08(土) 10:22:17.59 ID:cJmgrNkw
>>960
吠えるしかできない間抜け乙. w.
>>961
ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理.
PowerShellかC#とかでやった方がいい.
963 :デフォルトの名無しさん:2020/08/08(土) 11:11:14.30 ID:6XUmF/b8
とりあえずこんな感じ?(先頭は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
964 :デフォルトの名無しさん:2020/08/08(土) 11:14:22.00 ID:jNP2OM4q
>>962
ではcmdでいいです.
あるいはpython環境のほうが楽ですか?
>>963
cmdのコードは理解が難しいですね, , ,
965 :デフォルトの名無しさん:2020/08/08(土) 12:00:51.68 ID:jNP2OM4q
globでやってみます.
966 :デフォルトの名無しさん:2020/08/08(土) 12:16:11.89 ID:XwBZfJ1v
リネーム処理とかはもう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
967 :デフォルトの名無しさん:2020/08/08(土) 14:01:14.15 ID:jNP2OM4q
pythonでは向いてないですか.
968 :デフォルトの名無しさん:2020/08/08(土) 15:20:59.87 ID:IdUt1ux3
pythonはスレチ.
969 :デフォルトの名無しさん:2020/08/08(土) 15:22:12.94 ID:0U8ymD0p
>>967
ならPythonスレで聞けよ・・・.
970 :デフォルトの名無しさん:2020/08/08(土) 16:11:06.79 ID:Uh3gedSc
dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから.
wshでリネーム用のバッチファイルを作る方が楽かな.
wshではテキストを一括読みして変数に入れて.
テキストを順次読みしながら[上矢印]の変数の内容をバッチファイルのコマンドに変更してく.
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい.
もし失敗しても, 原因を見つけやすいしリカバリーもしやすい.
971 :デフォルトの名無しさん:2020/08/09(日) 04:55:36.88 ID:z2n3MQIn
仕様がないと取りかかれないと言うが.
発注者が仕様を曖昧にしておくほうが罪深いだろ.
要件定義が甘くて泣きをみるのはいつも現場だ.
972 :デフォルトの名無しさん:2020/08/09(日) 05:42:25.80 ID:KFfdng53
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 }
973 :デフォルトの名無しさん:2020/08/09(日) 06:16:13.05 ID:wnSURbps
そろそろ出てくるかと思ってた.
974 :デフォルトの名無しさん:2020/08/09(日) 06:38:11.28 ID:fObB6/0g
予測通り?
975 :デフォルトの名無しさん:2020/08/09(日) 08:51:35.00 ID:AwQ8dIl5
>>971
それはSEが無能なだけ.
一から十まで決定しなくても開発は進められる.
976 :デフォルトの名無しさん:2020/08/09(日) 16:47:47.63 ID:0zxLTv88
典型的な無能の発言だな.
977 :デフォルトの名無しさん:2020/08/09(日) 23:22:34.78 ID:TBMXuXvF
>>972
オワコンRubyジジイが出てきたか.
困るよね, こういう老害.
>>975
進められるけど手戻りして予算オーバーするわけね.
お前が無能.
978 :デフォルトの名無しさん:2020/08/10(月) 01:55:02.34 ID:9+h/1Osf
>>977
> 進められるけど手戻りして予算オーバーする.
マヌケが要件定義を担当するとそうなるね. w.
バカな開発チームだと, なぜか「ユーザーが悪い」という認識になる. ww.
979 :デフォルトの名無しさん:2020/08/10(月) 03:38:30.58 ID:1F6bB0mG
あいまいなのはユーザーが自分でも要求を把握しきっていないためだから.
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ.
980 :デフォルトの名無しさん:2020/08/10(月) 04:21:21.96 ID:mFEy/HZR
> あいまいなのはユーザーが自分でも要求を把握しきっていないため.
ブレない軸を導き出せないような無能SEは多いよね.
ある程度ブレてもダメージが少ないように開発するのが主流ですよ.
981 :デフォルトの名無しさん:2020/08/10(月) 11:53:14.80 ID:ZLJuvAm6
ある程度ブレても, いいように開発できればいいのですけれどもね.
時折, ニュースでも, 開発できなかったということで, クライアント側と,
メーカー側で裁判になっていますから, 難しいのだろうと思うのですが.
982 :デフォルトの名無しさん:2020/08/10(月) 21:32:34.56 ID:+SLQPb+P
>>981
それは折衝役がシステム開発に疎いだけ.
営業トークだけの人間が事態を悪化させる.
983 :デフォルトの名無しさん:2020/08/13(木) 21:47:50.59 ID:5FyzI8Jm
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ファイルでどのように書けば出来ますか?
984 :デフォルトの名無しさん:2020/08/13(木) 22:00:40.82 ID:E452L2zK
>>983
情報不足.
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ.
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが, for /? と打って自分で調べた方が早いだろ, これは.
どこかの新入社員だとか学生の課題っぽいな・・・.
985 :デフォルトの名無しさん:2020/08/14(金) 08:32:48.63 ID:SCMnTycc
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
986 :デフォルトの名無しさん:2020/08/14(金) 09:14:47.97 ID:oJspCYOK
イヤミでは, なく止したら? <Ruby
987 :デフォルトの名無しさん:2020/08/14(金) 09:32:16.73 ID:cdtRNbgQ
Swiss File Knife
988 :デフォルトの名無しさん:2020/08/14(金) 09:39:33.54 ID:dCe/n24a
・.
989 :デフォルトの名無しさん:2020/08/14(金) 14:59:12.49 ID:uGqrrAzw
>>983
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr
/c:"Updatetime"
"%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で読んで行番号を表示させる.
990 :デフォルトの名無しさん:2020/08/14(金) 21:06:33.51 ID:II+YlR7/
・.
991 :デフォルトの名無しさん:2020/08/14(金) 22:02:35.58 ID:TmzvbeJo
>>995
ウンコみたいにダサいコードをよく晒せるな.
生きてて楽しい?
992 :デフォルトの名無しさん:2020/08/14(金) 22:14:12.37 ID:B6QaDwta
未来予知乙.
生きてる価値もないな. w.
993 :デフォルトの名無しさん:2020/08/14(金) 22:43:27.80 ID:9FGl+Ien
低能Ruby厨か.
994 :デフォルトの名無しさん:2020/08/14(金) 23:06:43.67 ID:TmzvbeJo
リダイレクトカードオープン!
>>991 から >>995 へのアンカーは >>985 へリダイレクトされる!
が, Ruby爺は人格障害者だった!
精神的ダメージを受けていない!
Ruby爺がVZ爺を召喚しようとしている!
が, 自分自身だったので召喚できない!
Ruby爺がダサいコードを唱え始めた!
似非プログラマーは発狂した!
歴戦のプログラマーは何も感じていない!
歴戦のプログラマーの攻撃!
Ruby爺は5のダメージ!
歴戦のプログラマーはRuby爺をやっつけた!
経験値を0exp, ゴールドを0G 手に入れた!
「何だよ無職ニートの爺かよ・・・」と歴戦のプログラマーは思った.
995 :デフォルトの名無しさん:2020/08/14(金) 23:10:45.52 ID:SCMnTycc
Windows には, ini ファイルを読み書きできる, コマンド・アプリは無いの?
996 :デフォルトの名無しさん:2020/08/14(金) 23:35:08.04 ID:LY+T9Pmp
EDLIN
997 :デフォルトの名無しさん:2020/08/15(土) 00:03:00.44 ID:fUIncIgN
・.
998 :デフォルトの名無しさん:2020/08/15(土) 01:45:30.34 ID:t8slxubu
次スレは?
999 :デフォルトの名無しさん:2020/08/15(土) 02:14:16.82 ID:RWxrHj8y
https://www.vector.co.jp/vpack/filearea/dos/util/bat/
1000 :デフォルトの名無しさん:2020/08/15(土) 06:59:18.06 ID:R7NunwzB
質問いいでしょうか.
1001 :1001:Over 1000 Thread
このスレッドは1000を超えました.
新しいスレッドを立ててください.
life time: 632日 16時間 7分 11秒.
1002 :1002:Over 1000 Thread
1002コメント_363KB
全部_前100_次100_最新50
*スマホ版*_*掲示板に戻る*_*ULA版*
レス数が1000を超えています. これ以上書き込みはできません.
read.cgi ver 07.2.6 2018/12 Walang Kapalit *
Cipher Simian *
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/