[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
545(1): 2018/05/17(木)06:56 ID:TsNh8oQN(3/9) AAS
eof= を消すと副作用があるし
どっちにしろ引数に ; があると誤動作するみたいだし
こりゃあもうお手上げだな
546: 2018/05/17(木)07:02 ID:TsNh8oQN(4/9) AAS
あ、eol= だった
547(1): 2018/05/17(木)07:11 ID:pqvSuRzJ(1) AAS
質問者が「もっとすっきりくっきりな方法」と言ってるんだから複雑でトリッキーな方法は求められてなないだろう
548: 2018/05/17(木)08:50 ID:zVFG07SK(2/5) AAS
>>545
>>269-273
549: 2018/05/17(木)09:36 ID:cmWUEZX7(1) AAS
>>547
いつもそうなるけど、バッチじゃ諦めろ、が正解になってしまうよw
550(2): 2018/05/17(木)10:17 ID:TsNh8oQN(5/9) AAS
どんな方法でも良いから
引数の中に " とか ; が入ってても
正しく動作するのを頼む
というのは絶対に無理なのかね
551: 2018/05/17(木)11:47 ID:TsNh8oQN(6/9) AAS
>>550が不可ならそれを前提条件にするしかないだろ
ちょっと直してみた
@echo off
call :check_num "%~1" result
echo %result% & pause & goto :eof
:check_num
setlocal
set "b=FALSE" & if "%~1"=="" goto x
for /f "delims=-+0123456789 tokens=*" %%i in ("%~1") do (
set "a=%%i" & if not defined a set "b=TRUE"
)
:x
endlocal & set "%2=%b%"
552(1): 2018/05/17(木)17:15 ID:TsNh8oQN(7/9) AAS
とりあえず引数の " と ; の対策らしきもの
引数は行末まで1個のみ
もう嫌気がさしたのでこれ以上はやめとく
@echo off
set a=%*"
set /a b=0,c=0
setlocal enabledelayedexpansion
:x
set d="!a:~%b%,1!!a:~%b%,1!"
if !d!=="" goto y
if !d!=="""" set /a c+=1
if !d!==";;" set /a c+=1
set /a b+=1 & goto x
:y
endlocal & set c=%c%
set "e=FALSE" & if %c% gtr 1 (goto z) else set "a=%*"
for /f "delims=-+0123456789 tokens=*" %%i in ("%a%") do (
set "a=%%i" & if not defined a set "e=TRUE"
)
:z
echo %e%
553(1): 2018/05/17(木)17:16 ID:zVFG07SK(3/5) AAS
>>550
@echo off
set "arg1=%1"
call :check_num arg1 result
echo %result% & pause & goto :eof
:check_num
setlocal EnableDelayedExpansion
set "b=FALSE"
for /f "delims=0123456789 tokens=*" %%i in ("!%1!") do (
set "a=%%i" & if not defined a set "b=TRUE"
)
:x
endlocal & set "%2=%b%"
goto :eof
引数に ; は指定できない(半角空白、カンマ、セミコロン、=は引数の区切りを示すため)
なお、遅延環境変数の展開を使わないでも以下のようなチェックで最初に弾けば可能
if "%arg1:"=%" equ "%arg1:"=”%" (echo ^"なし) else echo ^"あり
554(1): 2018/05/17(木)17:18 ID:zVFG07SK(4/5) AAS
なお、+-は除くのが吉
+1+2-3
555(2): 2018/05/17(木)18:05 ID:TsNh8oQN(8/9) AAS
>554.bat 1"&ab"
'ab""' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
TRUE
556: 2018/05/17(木)21:22 ID:zVFG07SK(5/5) AAS
>>555
これ以上はファイル渡しにすべきだろう
set /p
or
for /f delimes^=^ tokens^=*^ eol^=
557: 2018/05/17(木)21:53 ID:TsNh8oQN(9/9) AAS
>>555
554.bat とあるが実際は >>553 のバッチ処理結果です
バッチ2行目の set コマンドの、左側の " が悪さをしてる
当然、下にあるチェック文もそのままでは使えない
引数 1;2 は実際には2つに分かれるが
これで TRUE を返すのは違和感あるので
>>552 では FALSE を返している
2つの %* を %1 にすれば TRUE を返せる筈
558: 2018/05/18(金)12:57 ID:CQAI+hTy(1) AAS
これが分からない
外部リンク:social.technet.microsoft.com
559: 2018/05/18(金)15:14 ID:nWqd9LPa(1) AAS
for /f %%i in ('"cmd /k prompt $h <nul"') do set BS=%%i
set /p AAA=".%BS% 必要ですか?(y/n):"
560: 2018/05/23(水)19:31 ID:Au5e7VGg(1) AAS
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
1FF18
561: 2018/05/24(木)10:48 ID:cPlRxlDn(1) AAS
1FF18
562(1): 2018/06/10(日)03:50 ID:TMZk6u5D(1/2) AAS
バッチファイルと同じ階層に複数のテキストファイルがあって、
バッチファイルに次々とドラッグ&ドロップしたファイル名(拡張子含む)のみリスト化していくのは下記でできるのは分かったのですが…
@echo off
for %%f in (%*) do (
echo %%~nxf
) >> list.txt
しかし、バッチファイルと同じ階層(別の階層でも良いですが)に複数フォルダがあり、各フォルダ内にテキストファイルが複数ある場合に、
フォルダをバッチファイルに1つ1つD&Dすることにより、そのフォルダ内のファイル名(拡張子)のみリスト化していくコマンドが分からず詰まっています。
/rを使わずにわざわざ1つずつD&Dするのは、単にファイル名の順番ではなく、リスト化を意図した順番にしたいからです。
どなたかお願いします。
563: 2018/06/10(日)16:08 ID:fV9CYqGb(1) AAS
なんだって?
564(1): 2018/06/10(日)19:14 ID:UcKh88So(1) AAS
@echo off
cd /d "%~1"
for /r %%f in (*.txt) do (
echo %%~nxf
) >> "%~dp0list.txt"
565(1): 2018/06/10(日)20:30 ID:T1x52eBJ(1) AAS
まずは、
>リスト化を意図した順番
これを詳しく説明するところからだな
566: 562 2018/06/10(日)20:59 ID:TMZk6u5D(2/2) AAS
>>564
できました
ありがとうございます!
>>565
意図した順番というのは、D&Dした順番、という意味でした
567: 2018/07/04(水)22:24 ID:gFgZc5FG(1) AAS
GTD
568: 2018/07/05(木)16:48 ID:AeL6VB/V(1) AAS
GTD
569(6): 2018/07/08(日)09:59 ID:48/+VLR1(1/2) AAS
ファイル名に半角スペースを含んで拡張子も一つじゃない複数のファイルをドロップしてファイルごとに処理したいんだけどどうfor書いたらいい?
今はこんな感じで書いてるんだけど半角スペースで切れちゃう
for %%f in (%*) do (
echo "%%~nxf"
)
570(1): 2018/07/08(日)17:55 ID:fq5YPvHI(1) AAS
>>569
それで問題なさそうなんだけど、
どういう問題なのか分からないから詳しく現象を説明してくれ
571(2): 2018/07/08(日)18:29 ID:48/+VLR1(2/2) AAS
>>570
ごめん半角じゃなくて全角スペースで切れてるみたいだ
"aaa bbb.txt"
こうなるはずがファイル一つドロップするだけで↓になる
"aaa"
"bbb.txt"
572: 2018/07/08(日)19:34 ID:ayaOLpVg(1) AAS
>>569
forじゃないけど、こんなんじゃあかんの?
:loop
echo %~nx1
shift
if not "%~1"=="" goto :loop
573: 2018/07/08(日)20:03 ID:noo5aK3K(1) AAS
aaa bbb.txtとかa&b.txtみたいなのは%1等で受け取っても切れるね
cmdの独特なコマンドラインパース処理が悪いともいえるし
半角スペース含まれてないのをいいことにD&D時にダブルクォートで囲わないOS側が悪いともいえるし困ったもんだな
D&Dで処理するのはスクリプト言語使った方がいいかもしれん
574: 2018/07/08(日)20:56 ID:O/180cHX(1/2) AAS
いまだにスペース問題抱えてるとは思わないよな
もう10数年以上前からあるのに
上下前次1-新書関写板覧索設栞歴
あと 428 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.014s