0

次のようなディレクター構造を通過するスクリプトを作成しようとしています。

school/admission/english->index.html

index.htmlの名前をenglish.htmlに変更する必要があります。これは親フォルダーであり、レベルを上げて結果が次のようになるようにします

school/admission/english.html

index.htmlこの同じプロセスを、そのフォルダー構造内の名前ですべてのファイルに対して繰り返す必要があります。この問題に取り組む方法についての助けをいただければ幸いです。

私が持っているすべての index.html ファイルを見つけるには:

   @echo off
for /r %%i in (index.html) do echo %%~ti %%~zi %%i

.html ファイルを 1 レベル上に移動するには:

for /r %x in (*.html) do move "%x" "%x"/../..
4

1 に答える 1

2

これは、コマンド ラインから実行できるかなり単純なネイティブ ソリューションです。

for /r %F in (index.html) do @for /f "eol=: delims=" %A in ("%F\..") do @if exist "%F" move "%F" "%F\..\..\%~nA%~xF"


コメントの追加の質問に応じて編集

フォルダー階層のリーフ ノードのみを処理する場合は、バッチ スクリプトを使用するのが最適だと思います。

@echo off
for /r %%F in (index.html) do (
  if exist "%%F" (
    set "subFolder="
    for /d %%A in ("%%~dpF\*") do set subFolder=1
    if not defined subFolder for /f "eol=: delims=" %%A in ("%%F\..") do move "%%F" "%%F\..\..\%%~nA%%~xF"
  )
)
于 2012-09-20T04:20:00.363 に答える