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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net]
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
echo.2ch.net/test/read.cgi/tech/1424858999/
【.cmd】 バッチファイルスクリプト %12 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1489207631/

それ以前の過去スレ
%10 peace.2ch.net/test/read.cgi/tech/1374205515/
%9  toro.2ch.net/test/read.cgi/tech/1335015478/
%8  toro.2ch.net/test/read.cgi/tech/1315844420/
%7  hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  pc11.2ch.net/test/read.cgi/tech/1178281991/

520 名前:デフォルトの名無しさん mailto:sage [2019/11/02(土) 13:44:45.56 ID:+w7z2z4x.net]
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

521 名前:デフォルトの名無しさん mailto:sage [2019/11/02(土) 14:20:34.65 ID:+UvDifof.net]
!hatebu バッチファイル
!qiita バッチファイル

522 名前:デフォルトの名無しさん [2019/11/03(日) 23:33:41.85 ID:/0rS8sv9.net]
質問なのですが、以下の内容を実行するバッチプログラムを作りたいのですが、どなたかご教示頂けないでしょうか。

Cドライブにある「A、B、C、D」という4つのフォルダとサブフォルダの中身全部を、
Dドライブにある「XXXX」のフォルダの中に存在するフォルダにコピーしたいのですが、コピーする際以下の条件があります。

1.フォルダが1つしかない場合、その中だけにコピーする。
2.フォルダが複数ある場合は、それぞれのフォルダに1.と同様にコピーする。


宜しくお願いします。

523 名前:デフォルトの名無しさん mailto:sage [2019/11/03(日) 23:37:03.86 ID:Xh3slsXc.net]
>>503
自分で作ってください

524 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 09:25:52.62 ID:0uHh5Wp4.net]
宜しくお願いします。と書けば誰かがやってくれるとでも?
xcopy robocopy move for if set call dir findstr
この辺使えりゃ出来るから自分で調べろ
"バッチ バックアップ" とかでググれば腐るほど例が出るだろ

525 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 13:01:25.95 ID:Zu03xGz4.net]
>>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 を使うとか

526 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 13:46:43.19 ID:UHaJ6Kuw.net]
> Ruby で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
> str = `powershell Get-Clipboard`

Rubyでできないなら、もう全部powershellで書いちゃえよw

527 名前:506 mailto:sage [2019/11/04(月) 15:48:40.94 ID:Zu03xGz4.net]
>>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

528 名前:デフォルトの名無しさん mailto:sage [2019/11/04(月) 22:13:40.62 ID:mdzUzifN.net]
>>505 >>508

有難うございます。
それらでググって調べてやってみます。



529 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 12:51:32.26 ID:3/4kxzup.net]
>>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

530 名前:デフォルトの名無しさん [2019/11/05(火) 18:52:56.56 ID:ykrQtfUP.net]
>>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

531 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:10:31.32 ID:3/4kxzup.net]
多分 %%~fd やね

532 名前:デフォルトの名無しさん [2019/11/05(火) 20:28:07.61 ID:ykrQtfUP.net]
%%dだけでフルパスになるから~fは不要。

533 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:42:07.32 ID:3/4kxzup.net]
そうか失礼いたしました

534 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 20:50:46.27 ID:kqXSHliE.net]
火【22】義母と娘ブルース 11.5__11.3__12.4__12.2__13.1__13.9__15.1__15.5__17.3__19.2(終)________14.15

これはドラマ視聴率のデータですがコマンドプロンプトで値を入力していって、
その時点での相加平均値を表示してくれるバッチファイルってできますか?
INPUTを使うのかな

あと、ウィンドウを開いている間生きている変数ってファイルへの格納、取り出しって
そんな面倒なことしてるなら表計算ソフトでも使えってか

535 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 21:30:33.42 ID:HPnxYMOW.net]
>>515
出来なくはないけれど set /a では整数しか扱えずバッチのみでやるのは面倒
やるならPowerShell とか wsh, js かな
単に平均出すだけなら電卓アプリの方が楽

536 名前:デフォルトの名無しさん mailto:sage [2019/11/05(火) 22:38:05.69 ID:aoMnc07l.net]
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ならこうかな?

537 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 01:50:43.91 ID:ZR40S1lI.net]
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 # 合計 / 要素数

538 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 03:37:02 ID:sEBZ5Hrs.net]
スレタイも読めないメクラか?
ドヤりたいなら該当スレへ逝け



539 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 15:19:13.85 ID:Z1XrM+Fl.net]
: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

540 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 15:48:22.56 ID:Z1XrM+Fl.net]
set /p N%i%=数値を入力 :
if not defined N%i% (echo 入力無効 &goto :INPUT)
echo !N%i%!|findstr /r /c:"[^0-9]" && (echo 入力無効 &goto :INPUT)

上のに真ん中の行追加で

541 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 20:50:16.92 ID:wTTuQQRz.net]
バッチファイルは難しすぎ!
引数の概念がLinuxと全く違う

542 名前:デフォルトの名無しさん mailto:sage [2019/11/06(水) 23:04:29.95 ID:wTTuQQRz.net]
空白が入ったパスをバッチファイルにわたすために
ダブルクォートで括らないといけないが、
それをやると、変数にダブルクォートが入るのがクソなんだな

しかも、if "%1" == "" とか書くと、引数がダブルクォート
一個だったときにエラーが出るとかいろいろ破綻してる

543 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 01:48:00 ID:4r3ojeSB.net]
>>522
難しすぎというよりは適当仕様すぎ
仕様を安易に何回も拡張した、増築して迷路化した老舗旅館

544 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 04:42:48.88 ID:nSoHFrko.net]
>>511
@for %%s 以下略じゃダメなの?

545 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:29:37.44 ID:lb8cogBR.net]
>>525
それならdoの後のforとxcopyにも@付けろ
何でも一行にすりゃいいわけじゃないがな

546 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 06:59:41.26 ID:LFqMQC4+.net]
>>523
%~1で外せるでしょ?

547 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 07:54:19.69 ID:isVFtAa0.net]
>>520さんありがとうございます
”これこそが私の求めていたものだ”
そんな慣用句?ローマの名文句?ってあったっけと思ってしまいますた。
000と00の入力処理で使いやすくなっているのがセンスというか実際の使用を考えた親切な仕様だなと思います。
訂正できるのは本当に便利だ。

VBSとRubyで書いてくださった>>517さんと>>518さんにも感謝。
自分の要求仕様がどう解釈・解決されるの

548 名前:か勉強になります。 []
[ここ壊れてます]



549 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 09:58:22.71 ID:d6TMJd25.net]
>>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 で空入力しても 空で上書き初期化されずそのまま残るみたい

550 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 10:37:33.42 ID:sEmiRyTj.net]
>>527
どこ見てもその程度。みんな適当なんだよな。

まず最初に書いた例から。バッチファイル(test.bat)を

1.このように書いた時
if "%1" == "" echo 引数なし

> test.bat "
コマンドの構文が誤っています。

2.このように書いた時
if "%~1" == "" echo 引数なし

> test.bat "
引数なし

※↑間違い。「"」という引数があります。

3. このように書いた時
if %~1 == "" echo 引数なし

> test.bat "
echo の使い方が誤っています。

551 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:19:13.92 ID:Z6Qb1qTa.net]
Windowsバッチの仕様がダメダメというのはそのとおりだが、
引数が " だけというのは、かなり特殊な想定だよな。
これが大丈夫という言語ってあるのか?

この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、
アプリの方で、\"〜\"で吐き出すように設定して、
バッチファイルで、この\を削除するようにすることで、
引数展開でおかしな動作をさせないようにしている。
e.g. fxのOpenWithアドオンなど

552 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:32:04.92 ID:sEmiRyTj.net]
>>531
言語関係ない。コマンドプロンプトの仕様だから

例えばechoでダブルクォートだけを出力したいなら
echo " と書くしか無い。

PowerShellとかコマンドプロンプトを使わないなら
閉じてないダブルクォートの扱いを変えることは可能だが、
コマンドプロンプトはもうどうしようもないw

そしてこれ(もともとはMS-DOSの仕様)を前提に
Windows版のC言語とかのCRTライブラリが作られ、
mainに渡る前に、そういう文字列を解釈するようになってる。

553 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:33:31.15 ID:sEmiRyTj.net]
> この場合とは違うが、外部アプリから""でくくったパスなどを渡してもらうときは、
> アプリの方で、\"〜\"で吐き出すように設定して、

いきあたりばったりなんだよなw
本当にここらへんの奴らは適当

554 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:40:37.56 ID:sEmiRyTj.net]
https://thinca.hate
nablog.com/entry/20100210/1265813598

\ は、
ダブルクォートの内外を問わず、" の前に \ を前置すると " 自身を表現できる。
\\" とすると \" の \ をエスケープしたことになり、 \" になる。この " は特殊文字である。
\\\" とすると \\ + \" になり、 \" になる。この " は " 文字自身である。
以下、\ が増える度に上記のようなエスケープを繰り返す。
\\\\" → \\" (" は特殊文字)
\\\\\" → \\" (" は通常文字)
上記以外の場所にある \、つまり後に " が続かない \ は、いくつ重なっていてもその文字自身になる。

555 名前:デフォルトの名無しさん [2019/11/07(木) 12:53:05.11 ID:LDERshfw.net]
>>528
バッチ/シェルスクリプトは、複雑なプログラミングをするものじゃない!
Ruby, PowerShell, VBScript などを使うべき

まず、データの仕様を作るべき。
その程度のデータなら、普通は、CSV 形式とか

1. どこかのサイトから、データの集積物を取得する
2. それをパースして、CSV 形式に変換する

一旦、CSV へ変換すれば、
その後は、Rubyなど、様々なプログラミング言語で処理できる

1の部分は、Ruby, Selenium WebDriver などで、クローラー・スクレイピングも出来る

556 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 12:58:16.29 ID:lb8cogBR.net]
>>531
まったくスレチだけどG

557 名前:nuPGのパスワードを思い出した
引用符だけのパスワードを渡す場合は

pass "
>gpg -c --passphrase ^""" hoge.txt
pass ""
>gpg -c --passphrase """""" hoge.txt
pass """
>gpg -c --passphrase ^""""""""" hoge.txt

何でこうなるかは知らんがGnuPGだけの話さ
コマンド側でどう引数処理するかだよな
バッチでは普通ダメだね
[]
[ここ壊れてます]

558 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:04:39.19 ID:sEmiRyTj.net]
ダブルクォートを"""と3個やっても動かないときは、
"""" に増やして動くか
""""" に増やして動くか
""""" に増やして動くか
これぐらいまで試す

あるある



559 名前:デフォルトの名無しさん mailto:sage [2019/11/07(木) 13:26:56.23 ID:Z6Qb1qTa.net]
>>536
クォートの先頭にエスケープが必要な場合でも、
後ろの方は何故かエスケープが不要なことがあるんだよな。
*nix系から移植したプログラムで、こういう事がたまに起きる。
いずれにしても、謎仕様…

560 名前:デフォルトの名無しさん mailto:sage [2019/11/08(金) 05:39:07.91 ID:78hADO4V.net]
set x=echo
%x% qqq

set a=y
set %a%=3
echo %y%

どちらもできた

561 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:37:18.78 ID:9Z+ynpem.net]
もう無理だw

if "%value%" == "" echo match

こんな感じのコードで、%value% にどんな文字
(ダブルクオート、スペース、カンマ、その他記号)が
入っていてもエラーにならないというコードを
バッチファイルで書くのは不可能だw

お手上げ\(-o-)/

562 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 12:55:41.49 ID:hmJLHo7y.net]
IF NOT DEFINED VALUE

563 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:02:21.70 ID:9HGwW/1Y.net]
>>541
あ、ごめん。実際は右側、値が入ってる。

if "%value%" == "abc" echo match

564 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:03:25.05 ID:hmJLHo7y.net]
setlocal enabledelayedexpansion
if "!value!"=="abc" echo match
endlocal

565 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:14:34.88 ID:9HGwW/1Y.net]
あれ?マジで?それだけでいけちゃうの?

566 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:22:47.16 ID:hmJLHo7y.net]
これな、"abc"の方が要注意なんよ
^とか!とか入ってるとやばいかも
setlocalの前に代入して
if !a!==!b! とかやった方がええかもな

567 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 13:53:03.27 ID:9HGwW/1Y.net]
>>545
右側、固定値なら大丈夫だよね?

568 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:00:20.08 ID:hmJLHo7y.net]
うん多分、変な文字入って無けりゃね
遅延モードだと全角文字のリテラルにも一部副作用が有るかも



569 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:07:53.35 ID:9HGwW/1Y.net]
なんだよ、全角文字の副作用って・・・
せっかく進んだのにw

570 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:15:55.11 ID:hmJLHo7y.net]
setlocalの外で代入すりゃ問題ない
遅延の中では書くな
あと、if !a!==!b! に " はたぶん不要

571 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:26:55.47 ID:9HGwW/1Y.net]
setlocalの中で代入するとなにか問題があるのか・・・

572 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 14:37:46.76 ID:hmJLHo7y.net]
ええと
setlocal enabledelayedexpansion 〜 endlocal の中だよ

573 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 15:15:35.38 ID:hmJLHo7y.net]
>>550
すまん。おれの勘違いだった
全角文字は関係無かった。無視してください
でも^や!は要注意だけど

574 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 17:06:16.41 ID:hmJLHo7y.net]
でもif文自体が挙動不審だからなあ
if "ーー"=="""" echo 同じ

575 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:49:07.09 ID:9HGwW/1Y.net]
>>553
ShiftJISだとだめだけど、バッチファイルをUTF8で保存したら大丈だったよ!

ただし、それでも引数で渡すとダメだったけどwww

576 名前:デフォルトの名無しさん mailto:sage [2019/11/09(土) 20:57:33.36 ID:9HGwW/1Y.net]
>>553
それも enabledelayedexpansion 使えば大丈夫じゃない?

setlocal enabledelayedexpansion
set A=%1
if !A! == "" echo 同じ


もうやだこの言語(?)

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

:LABEL
echo %*



> test.bat a
a
a

 これが普通

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

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

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

 なんで^増えてんだよwww

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

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

:LABEL
echo %1

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

key = value
[version]

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

re = /^\[version\]$/

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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






[ 続きを読む ] / [ 携帯版 ]

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

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