[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
452: 2018/03/25(日)01:41 ID:cTYVl2v9(1) AAS
普通は影響しないと思ってていいだろう
そのプログラムがシビアな待ち時間を気にするような造りにさえなってなければね
453: 2018/03/25(日)14:43 ID:8LXGoh28(1) AAS
dirはファイル自体を見に往くわけじゃないから
454(1): 2018/04/03(火)02:29 ID:yDWDpnwx(1/2) AAS
ちょっとハマってしまったのでアドバイスをいただきたく。
@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.txt
@echo -------------FOR開始---------------
FOR /F "tokens=*" %%a in ('echo !DATA2! ^| findstr /C:"be"') DO (
@echo FORに入った
@echo %%a
)
@echo -------------FOR終了---------------
:last
pause
455: 454 2018/04/03(火)02:42 ID:yDWDpnwx(2/2) AAS
>>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" にすればいいのだが、できれば一時ファイルへの出力は行いたくない。
何か良い方法はないでしょうか。
456(1): 2018/04/03(火)18:08 ID:dFuhrusg(1) AAS
日立だな
457: 2018/04/03(火)21:08 ID:NTm1Ga+l(1) AAS
空白区切りなら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
458(1): 2018/04/05(木)19:45 ID:9RkYEovX(1/2) AAS
とあるプロンプトを表示して確認画面でyes/no入れてyesが表示されたら処理を続けるnoが入れられたらgoto ENDって事がワンライナー(一行)でやりたいんですけど良い方法ありませんか?
459: 2018/04/05(木)19:54 ID:9RkYEovX(2/2) AAS
>>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
460(1): 2018/04/05(木)21:02 ID:KYHgmfzR(1/2) AAS
ワンライナー云々抜きに choice.exe は使ったらダメ?
461(1): 2018/04/05(木)21:10 ID:vXFo65tf(1) AAS
>>460
環境的にツールの導入は認められません
462(2): 2018/04/05(木)22:30 ID:ivnu80TE(1) AAS
choiceはWindowsに標準搭載されてるが
外部リンク:docs.microsoft.com
463(1): 2018/04/05(木)22:40 ID:BdFdoEej(1) AAS
database.txt にある複数の文字列を delete.txt の内容で消去したいと考えているのですが
「複数の文字列 削除」でぐぐっても複数ファイルから単一の文字列を削除するtipsしかヒットせず迷子の状態になってしまいました。
調べ方を教えていただけないでしょうか、よろしくお願いします。
[database.txt]
りんご,ごりら,らっぱ,ぱんだ,だちょう,うし,しお,おにぎり,りす,
[delete.txt]
ごりら
ぱんだ
うし
りす
[output.txt]
りんご,らっぱ,だちょう,しお,おにぎり,
464(1): 2018/04/05(木)23:13 ID:KYHgmfzR(2/2) AAS
>>461
XP なら追加が必要だが、Microsoftさまのリソースキットにはある
2003 もしくは XP 64bit 以降なら >>462 のいうように標準で存在する
まさか XP?
465: 2018/04/06(金)01:14 ID:fUXQxuPE(1) AAS
>>464
確かWindowsXPだけでなくWindowsNT4.0やWindows2000の場合も
別途リソースキットからchoice.exeを持ってくる必要があったな。
466: 2018/04/06(金)01:53 ID:eal1pYjS(1) AAS
>>463
Ruby で作った
# 行区切りのキーワードファイル
text_kw = File.read 'keyword.txt'
keywords = { }
text_kw.each_line do |line| # 1行ずつ処理する
line.chomp! # 末尾の改行を削除する
# 0文字でなければ、ハッシュに追加する
keywords[line] = true unless line.length == 0
end
text = File.read 'data.txt'
# 末尾の改行を削除して、カンマ区切りで配列に入れる
words = text.chomp!.split(',')
# その単語がハッシュにあれば、配列から削除する
words.delete_if { |word| keywords.has_key? word }
# カンマで連結して、ファイルに上書きする
File.write('out.txt', words.join(','))
467: 2018/04/06(金)03:19 ID:Jw59w3Z9(1) AAS
このrubyガイジはバッチスレにも住みついてんのか
468: 2018/04/06(金)07:06 ID:1XYxdGEK(1) AA×
>>666

ID:SYfKFmGc
469: 2018/04/06(金)07:12 ID:n8Wm7bZP(1) AAS
rubyマンワロタ
本スレでやれよw
470(1): 2018/04/06(金)10:00 ID:fQXPpScw(1) AAS
>>456
いただきたく。
ください。
なんでわざわざ長ったらしい書き方するんだろうね。
しかも質問してるくせに偉そうという。
471: 2018/04/06(金)23:57 ID:LzrMMW4f(1) AAS
>>462
何故かWindowsPEに入っていない不思議
472: 2018/04/07(土)09:33 ID:QDDx5b92(1) AAS
日立マンワロタ
日立スレでやれよw
473(1): 2018/04/07(土)13:50 ID:VdZT6mQb(1) AAS
>>470
回答者でもないお前が質問者の態度を問うな
474(1): 2018/04/07(土)15:41 ID:1zm7m+j1(1) AAS
>>473
おれは日本人としての道徳を説いてるんだが
475: 2018/04/07(土)21:08 ID:dWk4eLw8(1) AAS
>>474
あそこは日本人じゃなく山猿が結構いるよ
476: 2018/04/07(土)23:31 ID:pb/9IsOI(1) AAS
for /l %%n in (1,1,10) do (
477: 2018/04/11(水)23:23 ID:sp32so0L(1) AAS
質問させてください。
プログラムの標準出力を変数に代入する方法を調べ、以下のような方法を見つけて動作を確認しました。
FOR /f "DELIMS=" %%A IN ('ECHO ABC') DO SET ABC=%%A
しかし、'ECHO ABC' の部分にダブルコーテーションが含まれているとうまく動作しませんでした。
何らかの方法でダブルコーテーションをエスケープする必要があると思うのですが、
その方法をご存知の方がいらっしゃれば教えていただけないでしょうか。
よろしくお願いします。
478: 2018/04/12(木)05:05 ID:8z3G53ms(1) AAS
>>338-348と同じ話かな
479: 2018/04/12(木)07:05 ID:UI16Z2bS(1) AAS
@echo off
FOR /f "delims=" %%A IN ('ECHO hoge^"hoge') DO SET "ABC=%%A"
echo %ABC%
pause
480(1): 2018/04/21(土)16:41 ID:x8Crqpim(1/2) AAS
こんなファイルがありまして
2018/04/21 09:30:00
count
10
2018/04/21 10:00:00
count
20
↓のように変換出力したいです
2018/04/21 09:30:00<tab>10
2018/04/21 10:00:00<tab>20
どのようにしたらいいでしょうか
481(2): 2018/04/21(土)18:30 ID:9o1T2SLn(1/2) AAS
>>480
<tab>はTABコードだと判断したが、もし単なる文字列ならその部分は修正してくれ
@echo off
setlocal EnableDelayedExpansion
type nul>out.txt
for /f "delims=N" %%I in ('cmd /u /c echo 三') do set TAB=%%I
set n=0
for /f "tokens=* delims=" %%i in (in.txt) do (
set d!n!=%%i
set /a n+=1
if !n! geq 3 set n=0&echo.!d0!%TAB%!d2!>>out.txt
)
endlocal
上下前次1-新書関写板覧索設栞歴
あと 521 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.028s