11/10/08 13:48:37.77
> ドロップしたフォルダについては"タイトル"(&入り)だけ出来ませんでした。
パスにスペースが無くて&が入ってるとwinのドロップハンドラが""で囲まずにパスを送るからそうなる。winの仕様
例えばdirの結果から使うとか該当ディレクトリにcdしてfor(*)で受け取るとか別の方法考えたほうがいい
どうしてもドラッグドロップから使いたいのなら%cmdcmdline%から引数を受け取るという方法があるけど
これらのキーワードからどうすればいいか自分で思い付けないようであればやめといたほうがいい
簡単な解決策としてはパスにスペースを入れること
c:\test\music以下にあるとしたらc:\test\X music X
とか上位のディレクトリにスペース入れれば、「たぶん」問題なくなる
> :DEL_SFARST
> set DTITLE="%DTITLE:~2%
> exit /b
> :DEL_BFARST
> set DTITLE="%DTITLE:~2%
> exit /b
全く同じ処理してるんだからサブルーチン分ける必要ない
echo %DTITLE%|findstr /r /c:"^. ." 1>nul
if not errorlevel 1 ( call :DEL_SFARST )
echo %DTITLE%
echo %DTITLE%|findstr /r /c:"^. ." 1>nul
if not errorlevel 1 ( call :DEL_SFARST )
私ならif "%DTITLE:~1,1%"==" " とかで判定してgotoでループさせるかな
スペースひとつとは限らないし。位置も特定されたものを判定だから。
> )」をどこにおけば良いのか試行錯誤してるのですが未だ成功しません。
> for /D %%X in (*) do ( 改行 set DNAME="%%~X"
いきなり本番書き上げようとせずにtest.batとか作って必要最小限で構文試せ
echo が基本
for /D %%X in (*) do (echo "%%~X"
せめてロジックを思い付けれるくらいにはコマンドの動作を理解したほうがいい。丸暗記する必要は全く無いが
どんなコマンドがあるとかコマンドの説明書いてるサイトやリファレンスを一通り読んで
コマンドごとに簡単なものを書いてみて、もう少し理解を深めることを勧める。forの中でしかfor変数は使えない