No.2ベストアンサー
- 回答日時:
注意点
文字列にスペースがあると動きません
拡張子の判断はしません
ちゃんと動作確認してません
バッチは得意ではありません
ここを参考にしました:http://d.hatena.ne.jp/jak-san/20090305/1236256670
batと同じディレクトリにあるout.txtに追記します
echo off
for %%a in (%*) do call :sub "%%a"
exit /b
:sub
set fname=%~n1
set n=0
:loop
call set c=%%fname:~%n%,1%%
set /a n=n+1
if "%c%"=="" goto :EOF
if "%c%"=="_" goto break
goto loop
:break
call set cname=%%fname:~%n%%%
set n=0
:eloop
call set c=%%cname:~%n%,1%%
set /a n+=1
if "%c%"=="" goto :EOF
if "%c%"=="_" goto :break2
goto eloop
:break2
set /a n-=1
call set newname=%%cname:~0, %n%%%
echo %newname% >> %~dp0out.txt
goto :EOF
No.3
- 回答日時:
no2です
フォルダ名にスペースがあると動かないようですね。改良版です
私の知識ではスペース以外が原因だと直せません。ていうか原因が特定できません
echo off
FOR /F "usebackq delims==" %%a IN (%*) DO call :side %%a
:sub
set fname=%~n1
set n=0
echo %fname%
:loop
call set c=%%fname:~%n%,1%%
set /a n=n+1
if %c%=='' goto :EOF
if %c%==_ goto break
goto loop
:break
call set cname=%%fname:~%n%%%
set n=0
:eloop
call set c=%%cname:~%n%,1%%
set /a n=n+1
if %c%=='' goto :EOF
if %c%==_ goto :break2
goto eloop
:break2
set /a n=n-1
call set newname=%%cname:~0, %n%%%
echo %newname% >> "%~dp0out.txt"
goto :EOF
繰り返しご回答ありがとうございます。
ファイル名に半角丸括弧が入っていると
動作しないのはどうしようもないのでしょうか?
単一ファイルではfor文の行を消すことで正常動作するのですが、
for文を入れると駄目なので
複数ファイルの処理ができません。
後出しで大変申し訳ないのですが、
もしご存知でしたらご教示いただけないでしょうか?
No.4
- 回答日時:
no2です、コード間違えました。
ファイル名に空白があるとやっぱり動きません。for %%s in (%*) do call :sub %%s
exit /b
:sub
for /f "usebackq delims==" %%a in ('%*')do call :main %%a
exit /b
:main
set fname=%~n1
set n=0
:loop
call set c=%%fname:~%n%,1%%
set /a n=n+1
if %c%=='' goto :EOF
if %c%==_ goto break
goto loop
:break
call set cname=%%fname:~%n%%%
set n=0
:eloop
call set c=%%cname:~%n%,1%%
set /a n=n+1
if %c%=='' goto :EOF
if %c%==_ goto break2
goto eloop
:break2
set /a n=n-1
call set newname=%%cname:~0,%n%%%
echo %newname% >> "%~dp0out.txt"
goto :EOF
No.5
- 回答日時:
FOR /Fで解析するのは,「ファイル名」を「_」で分離する,という作業です。
あとは,真ん中引っ張ってくればよいので……
@ECHO OFF
REM 環境変数の変更をこのバッチファイル内に留め,拡張機能と遅延展開を有効にする
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
REM 出力ファイル名
SET OUTPUT=%~dpn0.txt
:LOOP
IF "%~1"=="" GOTO :EOF
REM 対象のファイルの拡張子は.txt固定
IF "%~x1"==".txt" (
REM ファイル名を_で分割
FOR /F "delims=_ tokens=1,2,3,4 usebackq" %%A IN (`echo %~n1`) DO (
REM _は2つ,つまり3分割されたはず。4分割以上だったり2分割以下の場合は処理しない
IF "%%~D"=="" (
IF NOT "%%~C"=="" (
REM T1 : 真ん中の部分
SET T1=%%B
REM T2 : T1の最初2文字
SET T2=!T1:~0,2!
REM 出力するのは,最初2文字がkbの場合のみ
IF "!T2!"=="kb" ECHO !T1!>>"%OUTPUT%"
)
)
)
)
REM D&Dされた別のファイルも見るために,SHIFTする
SHIFT
GOTO LOOP
でできあがり。インデント用にU+3000を使っているので,適宜U+0009なりU+0020なりに置き換えて下い。
# U+3000をcmd.exeは空白として通すようですが。
ご回答ありがとうございます。
ファイル名に半角丸括弧が入っていると
動作しないのはどうしようもないのでしょうか?
後出しで大変申し訳ないのですが、
もしご存知でしたらご教示いただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプトでファイル...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト標準出力と...
-
DOSのバッチで、テキストファイ...
-
コマンドプロンプト(バッチファ...
-
コマンドプロンプトで2ヶ月前3...
-
バッチファイル テキストファイ...
-
バッチファイルでDirで取得した...
-
呼び出し元バッチを知るには?
-
DOSのバッチで、変数中のファイ...
-
IPアドレスの第3オクテットだ...
-
はじめまして。
-
echoとsystem関数について
-
バッチからバッチを逐次よぶ方法
-
DOS終了コードの確認
-
バッチファイル IF 複数条件方法
-
VBアプリケーションで終了コー...
-
コマンドプロンプトの「%1」と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト標準出力と...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト(バッチファ...
-
バッチファイルで常に最新の現...
-
VBアプリケーションで終了コー...
-
コマンドプロンプト(バッチ)...
-
バッチファイルでDirで取得した...
-
DOSのバッチで、変数中のファイ...
-
IPアドレスの第3オクテットだ...
-
バッチファイルで2つ以上の変...
-
子バッチ内のキー入力処理へ自...
-
バッチファイル(for文)がうま...
-
絶対パス名からファイル名を取...
-
呼び出し元バッチを知るには?
-
DOSのバッチで、テキストファイ...
-
バッチファイル テキストファイ...
-
echoとsystem関数について
おすすめ情報