1

私は次のような約1000個のファイルを持っています:

_etc_sec
_home_host_www_temp
and etc.

バッチファイルを作成して、ファイル名に応じて相互にフォルダを作成し、このファイルをその中に入れる方法。

すべてのファイルはd:\にあります。したがって、_etc_secという名前のファイルがある場合は、d:\ etcという名前のフォルダーを作成してから、ファイル_etc_secをファイルd:\etcに配置する必要があります。

したがって、_home_host_www_tempという名前のファイルがある場合は、d:\ homeという名前のフォルダーを作成し、このフォルダー内にフォルダーhostを作成し、次にフォルダーhost内にフォルダーwwwを作成し、ファイル_home_host_www_tempをファイルd:\ home \ host\wwwに配置する必要があります。

私はVBAでそれを行う方法を知っていますが、バッチcmdは私にとって難しいです。ありがとう。

4

1 に答える 1

1

SET検索と置換を使用して_を\に変更し、FOR変数〜p修飾子を使用して、作成する必要のあるフルパスを取得します。1つのMKDIRコマンドで、一連のネストされたディレクトリを作成できます。文字を含むファイル名がある場合に備えて、ループ内で遅延展開のオンとオフを切り替えます!

@echo off
setlocal disableDelayedExpansion
for %%F in (*_*) do (
  set "file=%%F"
  setlocal enableDelayedExpansion
  for %%A in ("!file:_=\!") do (
    endlocal
    2>nul mkdir "%%~pA"
    >nul move "%%F" "%%~pA"
  )
)
于 2012-08-12T18:04:24.443 に答える