[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
601: 2018/07/12(木)11:56 ID:72SuVZq5(1) AAS
それ以前に、DOS自体が、現e(ry
602
(1): 2018/07/12(木)14:54 ID:+klw6xr1(1/9) AAS
>>569 無理矢理にバッチで書いてみた

@echo off
set "a=%cmdcmdline:"=""%"
setlocal enabledelayedexpansion
set /a b=0,n=0
set "s=" & set "d=""
:x1
if not "!a:~%b%,1!"=="/" set /a b+=1 & goto x1
:x2
if "!a:~%b%,1!"=="!d!" set /a n+=1
省8
603: 2018/07/12(木)14:54 ID:+klw6xr1(2/9) AAS
:x5
if not "!a:~%b%,1!"==" " set /a b+=1 & goto x5
set "s=!s!!d!!d!!a:~0,%b%!!d!!d! " & set /a b+=1
set "a=!a:~%b%!" & set /a b=0 & goto x4
:x6
if "!a:~%b%,1!"=="!d!" set /a n+=1
if !n! equ 4 set /a b+=1 & goto x7
set /a b+=1 & goto x6
:x7
set "s=!s!!a:~0,%b%! " & set /a b+=1
省6
604: 2018/07/12(木)20:30 ID:Gmf0IrMF(1/5) AAS
>>602
ファイル名に全角スペースが含まれていない場合に""が一つ余計に出力されます
605: 2018/07/12(木)20:30 ID:Gmf0IrMF(2/5) AAS
訂正
全角スペースが含まれず半角スペースが含まれている場合
606
(1): 2018/07/12(木)20:48 ID:+klw6xr1(3/9) AAS
レスありがとう
でもこちらでは再現できない
出来たら具体例を
607: 2018/07/12(木)21:08 ID:+klw6xr1(4/9) AAS
もしかしたらset文の行末にスペースがありませんかね?
行末のスペースが有ったら全て削除してみて下さい
608: 2018/07/12(木)21:25 ID:Gmf0IrMF(3/5) AAS
>>606
もうちょい検証してこんなファイル名で発生するのを確認しました
"aーa b.txt"
""
専ブラからコピーしたんでスペースとかはありませんでした
長めのスクリプト貼るときはpastebinとか使ったほうがいいかもしれません
609: 2018/07/12(木)21:31 ID:+klw6xr1(5/9) AAS
バッチファイル名にスペースがあると不味いようです
610: 2018/07/12(木)21:37 ID:+klw6xr1(6/9) AAS
違うな...
ファイル名なんですか?
611: 2018/07/12(木)21:39 ID:Gmf0IrMF(4/5) AAS
バッチファイル自体はtest6.batなのでスペースはありません
このファイル名だと処理自体が終わらなくなりました
ーa ーb ーc.txt
612
(2): 2018/07/12(木)21:39 ID:Gmf0IrMF(5/5) AAS
最初に検証したファイル名は
aーa b.txt
です
613: 2018/07/12(木)21:52 ID:+klw6xr1(7/9) AAS
バッチファイル名
"test.bat" がOK, "test - コピー.bat" が NG
"ー" がダメ文字っぽい
なんだこりゃ
614: 2018/07/12(木)22:45 ID:+klw6xr1(8/9) AAS
>>612
とりあえず最初の3行を

@echo off
setlocal enabledelayedexpansion
set "a=!cmdcmdline:"=""!"
set "a=!a:ー=/1!"

最後の5行を

:x8
set "s=!s:/1=ー!"
set "s=!s:""="!"
省5
615: 2018/07/12(木)23:31 ID:+klw6xr1(9/9) AAS
これも追加
5行目
set "a=!a:―=/2!"
:x8の次の行に
set "s=!s:/2=―!"
616: 2018/07/13(金)00:39 ID:7GlypEZW(1) AAS
漢字コードが関係しているのかも
shift−jis
chcp 932

utf-8
chcp 65001

で試してみたら
617
(2): 2018/07/13(金)06:59 ID:laaSwUH8(1/3) AAS
if文のバグ?

@echo off
setlocal enabledelayedexpansion
set a=ーー
set b=――
set c=xx
set d=""
if "!a!"=="!d!" echo NG1
if "!b!"=="!d!" echo NG2
if "!c!"=="!d!" echo NG3
省4
618: 2018/07/13(金)19:59 ID:laaSwUH8(2/3) AAS
>>617
if "!a!"=="!b!" echo NG4

結果は
NG4

まあ、見た目は似ているが...
619: 2018/07/13(金)20:29 ID:laaSwUH8(3/3) AAS
ちなみに >>617 をメモ帳にコピペして
変数 a の文字列で検索したら、なぜか変数 b にも一致したりする
逆もまた然り
620
(1): 2018/07/14(土)06:43 ID:8rUsawXH(1/3) AAS
>>612
if文の不具合は引用符絡みのようなので
それを削除して書き直しました

@echo off
call :set_arg arg
if not defined arg goto :eof
for %%f in (%arg%) do echo "%%~nxf"
pause & goto :eof

:set_arg
setlocal enabledelayedexpansion
省10
621: 2018/07/14(土)06:43 ID:8rUsawXH(2/3) AAS
:x3
set a=!a:~%b%,-1!& set /a b=0
:x4
if not defined a goto x8
if !a:~%b%^,1!==!d! set /a n=0 & goto x6
:x5
if not !a:~%b%^,1!==!e! set /a b+=1 & goto x5
set s=!s!!d!!a:~0,%b%!!d!!e!& set /a b+=1
set a=!a:~%b%!& set /a b=0 & goto x4
:x6
省9
622
(1): 2018/07/14(土)09:47 ID:17hM4zE5(1) AAS
>>620
パスに全角半角含むかどうかに関わらず
a.pngがNG
a - コピー.pngがOK
あ.pngがNG
623: 2018/07/14(土)18:45 ID:8rUsawXH(3/3) AAS
>>622
すみません。:x3 の下の行を下記に訂正します

:x3
set a=!a:~%b%,-1!!e!& set /a b=0
624: 2018/07/14(土)22:32 ID:utl6Xayz(1) AAS
>>598
IT土方してるけどいまだにVB6のメンテ案件がたくさん来る (・_・;)
古いシステムを使い続ける企業って多いんだなあ
625: 2018/07/14(土)23:07 ID:LxoRiW+E(1) AAS
日本は異常なほどソフト弱すぎだわな
626
(3): 2018/07/15(日)00:45 ID:LqRrN2Y+(1/3) AAS
リダイレクト使ってバッチ内に記述したテキストをファイルに出力すると、行数が増えるにつれて
どんどん処理が遅くなるんですが(多分ファイルのオープンとクローズの処理が重たい
んだとは思うけど)、何十行もあるテキストでも一括で書き込んで早くする方法とかないですか?

ただ不思議なのは、ソースとなるテキストを別のテキストファイルからforで読み込みして
各行を逐次出力ファイルにリダイレクトで書き出した場合はそんなに遅くないんですよねぇ。
627
(3): 2018/07/15(日)07:47 ID:3kOM020K(1/2) AAS
>>626
俺はそう思ったことはないなぁ…具体的なコードを見せて。

一括での書き込みは、処理をカッコで括るとできる。
(
echo start
:
:
echo end
) > test.txt
628
(1): 626 2018/07/15(日)10:00 ID:LqRrN2Y+(2/3) AAS
>>627
コードといっても何も特別なことはしてないんだけど、何十行というのは嘘で
当該箇所確認してみたら実際には何百行もありました。

----- sample1.bat
echo [%time%] 開始
type nul > "D:\tmp\out-file.txt"
echo hoge>> "D:\tmp\out-file.txt"
echo hoge>> "D:\tmp\out-file.txt"
   〜延々と600行近い繰り返し〜
echo hoge>> "D:\tmp\out-file.txt"
省8
629
(2): 626 2018/07/15(日)10:01 ID:LqRrN2Y+(3/3) AAS
>>627

----- sample2.bat
echo [%time%] 開始
type nul > "D:\tmp\out-file.txt"
for /f "usebackq delims=" %%L in (`findstr /n .* "D:\tmp\hoge-source.txt"`) do (
set str_temp=%%L
call :redirect-loop
)
echo [%time%] 終了
exit /b
省6
630: 2018/07/15(日)11:22 ID:SEkGxxwq(1) AAS
へー(´・∀・`)
1-
あと 372 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s