[過去ログ]
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489207631/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
430: デフォルトの名無しさん [sage] 2018/03/18(日) 22:17:56.90 ID:5/8yH4g6 /? は >>419 の方がダメだった http://mevius.5ch.net/test/read.cgi/tech/1489207631/430
431: デフォルトの名無しさん [sage] 2018/03/18(日) 22:45:10.52 ID:WKBkcipr 俺が仮組みしてみたやつもforの変な仕様で空行削除されてた バッチだけで手軽には無理だな 素直に適当なスクリプト使った方がいい http://mevius.5ch.net/test/read.cgi/tech/1489207631/431
432: デフォルトの名無しさん [sage] 2018/03/18(日) 22:59:27.55 ID:Cc3+LG/u >>430 セミコロンをピリオドとかコロンとにするといいみたい echo; → echo: http://mevius.5ch.net/test/read.cgi/tech/1489207631/432
433: デフォルトの名無しさん [sage] 2018/03/18(日) 23:05:58.69 ID:Sr1iY1Ai >>425 424のほうのgoto labelをfor(/L)にすると多少速くなるけど findstrを繰り返し使ったほうが速いね メモリにも優しい http://mevius.5ch.net/test/read.cgi/tech/1489207631/433
434: デフォルトの名無しさん [sage] 2018/03/18(日) 23:09:22.00 ID:WKBkcipr >>432 どの文字に変えてもその文字が来ればデミリタ判断されておかしなぶった切りが起こるから デミリタ文字のエスケープ処理が必要になるんでは http://mevius.5ch.net/test/read.cgi/tech/1489207631/434
435: デフォルトの名無しさん [sage] 2018/03/19(月) 02:29:30.41 ID:VE4HgUIn ×デミリタ ○デリミタ http://mevius.5ch.net/test/read.cgi/tech/1489207631/435
436: デフォルトの名無しさん [sage] 2018/03/19(月) 06:32:04.04 ID:UCUeI8NE UTF8扱えない時点で限界を感じる http://mevius.5ch.net/test/read.cgi/tech/1489207631/436
437: デフォルトの名無しさん [sage] 2018/03/19(月) 09:11:01.79 ID:cAxnz/N1 set /a a=0,b=0,c=0,d=1 & del out.txt 2> nul for /f "delims=:" %%i in ('findstr /n . in.txt') do set /a a=%%i for /f "delims=:" %%i in ('findstr /n hoge in.txt') do set /a b=%%i if %a%==%b% set /a c=b for /f "delims=0123456789 tokens=*" %%i in ('findstr /n .* in.txt') do ( set "e=%%i" setlocal enabledelayedexpansion if !d!==!c! goto x echo.!e:~1!>>out.txt endlocal set /a d+=1 ) :x e
cho hoge>>out.txt http://mevius.5ch.net/test/read.cgi/tech/1489207631/437
438: デフォルトの名無しさん [sage] 2018/03/20(火) 06:19:09.67 ID:5rDh/omp >>437 元ファイルにechoで追加ですむ場合もあるが ファイル終端が改行になってるか確認する方法が思いつかない http://mevius.5ch.net/test/read.cgi/tech/1489207631/438
439: デフォルトの名無しさん [sage] 2018/03/20(火) 08:03:38.21 ID:BuzmWDFp >>438 終端に改行があろうがなかろうが、echoで出力すれば改行は付加されるよ あとは参考になるかわからんが set LF=^ setlocal EnableDelayedExpansion findstr /n .* in.txt findstr /n $ in.txt findstr /n !LF! in.txt の出力の差で終端改行のありなしの見分けがつくかも (setとsetlocal行の間の空行は省略しないこと) 改行コードが、CR/LF、LF、CRで違った結果が出るところが面白いよ http://mevius.5ch.net/test/read.cgi/tech/1489207631/439
440: デフォルトの名無しさん [sage] 2018/03/20(火) 19:42:04.51 ID:5rDh/omp >>439 ファイル終端が改行になっていないと最後の行の後ろにhogeがくっつくだけだよ >>419で試してみなよ echoで空行を追加してからhogeを付ければいいんだけど それだとファイル終端が改行になっていたら余計な空行ができる http://mevius.5ch.net/test/read.cgi/tech/1489207631/440
441: デフォルトの名無しさん [sage] 2018/03/20(火) 20:10:53.11 ID:to9q6Sr+ コマンドプロンプトの画面で以下の<コマンド?>を入力すると現在の年月日時分秒が表示されるのですが これを変数に入れるにはどうすれば良いのでしょうか? 以下の<コマンド?>ではうまく入りませんでした・・・ <コマンド?> powershell -command "date -f yyyyMMddHHmmss" <コマンド?> set NICHIJI=powershell -command "date -f yyyyMMddHHmmss" http://mevius.5ch.net/test/read.cgi/tech/1489207631/441
442: デフォルトの名無しさん [sage] 2018/03/20(火) 23:06:27.49 ID:BuzmWDFp >>440 >>437のことじゃなかったのか http://mevius.5ch.net/test/read.cgi/tech/1489207631/442
443: デフォルトの名無しさん [sage] 2018/03/20(火) 23:18:51.64 ID:aHaiWzOW >>441 for /f "delims=" %%G in (‘powershell -command “date …”’) do set “NICHIJI=%%G" http://mevius.5ch.net/test/read.cgi/tech/1489207631/443
444: デフォルトの名無しさん [sage] 2018/03/20(火) 23:52:48.01 ID:BuzmWDFp >>441 外部プログラムの標準出力を取り込むのが目的ではなくて、単に現在日時をセットするだけならバッチのみで済むけど set NICHIJI=%date:/=%%time::=% set NICHIJI=%NICHIJI:~0,-3% http://mevius.5ch.net/test/read.cgi/tech/1489207631/444
445: デフォルトの名無しさん [sage] 2018/03/21(水) 01:09:02.52 ID:UBrEBSgZ >>442 すみません、分かりにくい文でした >>437を改造しようとしたが改行がネックだと言う話 以下の通り改造してみた >>437の4行目と5行目の間に一行挿入 if %c%==0 goto y ラベル:x以降は変更 :x echo hoge>>out.txt goto :eof :y copy in.txt out.txt & call :x for /f %%i in ('findstr .* out.txt') do set "e=%%i" if "%e%"=="hoge" goto :eof copy in.txt out.txt echo.>>out.txt goto x htt
p://mevius.5ch.net/test/read.cgi/tech/1489207631/445
446: デフォルトの名無しさん [sage] 2018/03/21(水) 01:15:45.86 ID:UBrEBSgZ あ、for /f "delims=" かな http://mevius.5ch.net/test/read.cgi/tech/1489207631/446
447: デフォルトの名無しさん [sage] 2018/03/22(木) 16:25:40.46 ID:pbBa6R9F echo と同じ行で何か実行すると空白が入る echo.>a echo.>b & rem dir a b http://mevius.5ch.net/test/read.cgi/tech/1489207631/447
448: デフォルトの名無しさん [sage] 2018/03/22(木) 17:04:47.92 ID:pbBa6R9F 豆知識その2 echo と同じ行でパイプ実行すると表示が変わることがある set a=%%b%% set b=xxx echo %a% echo %a% | more http://mevius.5ch.net/test/read.cgi/tech/1489207631/448
449: デフォルトの名無しさん [sage] 2018/03/22(木) 17:12:47.60 ID:pbBa6R9F 豆知識その3 文字化け嫌なら遅延展開で @echo off set "a=a > nul" set "b=b & rem" echo %a% echo %b% echo ------ setlocal enabledelayedexpansion echo !a! echo !b! pause http://mevius.5ch.net/test/read.cgi/tech/1489207631/449
450: デフォルトの名無しさん [sage] 2018/03/22(木) 21:50:43.44 ID:TJWufbYh プログラムからファイルの追加・削除・変更などを行っている最中のフォルダに対して「dir /s」のコマンドを実行した場合 そのせいでプログラムからの処理を邪魔してしまうことってあるのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1489207631/450
451: デフォルトの名無しさん [sage] 2018/03/24(土) 19:48:05.05 ID:pj5y8nH5 絶対に邪魔をしないと言い切るのは難しいな。悪魔の証明 http://mevius.5ch.net/test/read.cgi/tech/1489207631/451
452: デフォルトの名無しさん [sage] 2018/03/25(日) 01:41:58.87 ID:cTYVl2v9 普通は影響しないと思ってていいだろう そのプログラムがシビアな待ち時間を気にするような造りにさえなってなければね http://mevius.5ch.net/test/read.cgi/tech/1489207631/452
453: デフォルトの名無しさん [sage] 2018/03/25(日) 14:43:32.24 ID:8LXGoh28 dirはファイル自体を見に往くわけじゃないから http://mevius.5ch.net/test/read.cgi/tech/1489207631/453
454: デフォルトの名無しさん [sage] 2018/04/03(火) 02:29:58.94 ID:yDWDpnwx ちょっとハマってしまったのでアドバイスをいただきたく。 @echo off cd /d %~dp0 setlocal ENABLEDELAYEDEXPANSION FOR /f "delims=" %%i IN ('cmd /u /c ECHO;名') DO ( SET CR=%%i SET CR=!CR:~0,1! ) SET LF=^ set CRLF=!CR!!LF! set DATA=alpha beta gamma set DATA2=%DATA: =!CRLF!% @echo ---------------------------------------------- @echo !DATA2! @echo ---------------------------------------------- (@echo !DATA2!) > testdata2.t
xt @echo -------------FOR開始--------------- FOR /F "tokens=*" %%a in ('echo !DATA2! ^| findstr /C:"be"') DO ( @echo FORに入った @echo %%a ) @echo -------------FOR終了--------------- :last pause http://mevius.5ch.net/test/read.cgi/tech/1489207631/454
455: 454 [sage] 2018/04/03(火) 02:42:57.22 ID:yDWDpnwx >>454でやりたいこと ・空白区切りの文字列群が入っている環境変数DATAがある。 ・ここから、特定の文字列(ここでは"be")を含む文字列だけを取り出したい。 ・空白を改行(CRLF)に置換してfindstrすればいいかと思ったが、 @echo !DATA2! > testdata2.txt では確かに改行されたファイルができるものの、 @echo !DATA2! | findstr /C:"be" だと、そもそも @echo !DATA2! が "alphaCRLFbetaCRLFgamma"のような単一行扱いでfindstrに渡されるら
しく(?)、うまくいかない。 出力結果は -------------FOR開始--------------- FORに入った alpha -------------FOR終了--------------- となってしまう。 (echo alphaCRLFbetaCRLFgamma をやろうとして、CRLFのとこまでしか出力してないということ?) ・type testdata2.txt | findstr /C:"be" にすればいいのだが、できれば一時ファイルへの出力は行いたくない。 何か良い方法はないでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1489207631/455
456: デフォルトの名無しさん [sage] 2018/04/03(火) 18:08:30.38 ID:dFuhrusg 日立だな http://mevius.5ch.net/test/read.cgi/tech/1489207631/456
457: デフォルトの名無しさん [sage] 2018/04/03(火) 21:08:04.29 ID:NTm1Ga+l 空白区切りならcallとshiftで回せばいいのでは @echo off set DATA=alpha beta gamma call :SEARCH %DATA% goto :eof :SEARCH if "%1" == "" goto :eof echo %1 | findstr be shift goto SEARCH http://mevius.5ch.net/test/read.cgi/tech/1489207631/457
458: デフォルトの名無しさん [] 2018/04/05(木) 19:45:55.97 ID:9RkYEovX とあるプロンプトを表示して確認画面でyes/no入れてyesが表示されたら処理を続けるnoが入れられたらgoto ENDって事がワンライナー(一行)でやりたいんですけど良い方法ありませんか? http://mevius.5ch.net/test/read.cgi/tech/1489207631/458
459: デフォルトの名無しさん [] 2018/04/05(木) 19:54:59.74 ID:9RkYEovX >>458は例えば↓なのを一行でやりたいんです setlocal set /p answer="実行しますか(y/n)? : %answer%" if "%answer%"=="y" ( echo "start" ) else if "%answer%"=="n" ( echo "cancel" exit /b 1 )else ( echo "other key" exit /b 1 ) endlocal http://mevius.5ch.net/test/read.cgi/tech/1489207631/459
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 543 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s