파일 이름을 기반으로 디렉토리를 만들고이 파일들을 CMD를 사용하여 이동하는 방법? 파일을 가지고 있는데,

내가 말했듯이, 나는 하나의 폴더에 Some * .Xml 파일을 가지고 있는데, 나는 그것들을 그들의 이름을 기반으로 하위 디렉토리로 옮기고 싶다.

하지만 두 가지 더 필요합니다.

1- * .xml 디렉토리가 아닌 상위 디렉토리에서 명령을 적용 / 실행해야합니다.

2 – 필요한 하위 디렉토리를 만들고, XML 파일을 그들로 옮긴 후, 나는 그것들을 모두 “XML Backup”이라는 새로운 디렉토리로 옮기고 싶다.

예를 들면 다음과 같습니다.

X:\folder1\folder2\file1.xml
X:\folder1\folder2\file2.xml
X:\folder1\folder2\file3.xml

내가해야 할 일은 정확히 다음과 같다.

X:\folder1\folder2\xml_Backup\file1\file1.xml
X:\folder1\folder2\xml_Backup\file2\file2.xml
X:\folder1\folder2\xml_Backup\file1\file3.xml

명령을 실행해야한다는 것을 명심하십시오. X:\folder1

그건 그렇고, 내가 다른 방법으로 배치 파일 에서이 명령을 사용하려고했지만, 내가 할 일의 조건 때문에 그것을 할 수 없습니다 :

for /R %%F in (*.xml) do (
2>nul md "%%~nF"
>nul Move /y "%%~nF.*" "%%~nF"
)

* .xml 디렉토리에서이 일괄 처리 / 명령을 실행하려고하면 (XML 파일 이름을 기반으로 한) 하위 디렉토리가 올바르게 만들어지고 xml 파일로 이동되지만 문제는 만드는 것입니다. 새 dirs, 나는 “XML 백업”이라는 다른 디렉토리에 이러한 XML 디렉토리를 이동해야합니다.



답변

문제는 새 디렉토리를 만든 후입니다, 나는 “XML 백업”이라는 다른 디렉토리로 이러한 XML 디렉토리를 이동해야합니다.

배치가 “xml_Backup”폴더를 만들도록 수정하고 (존재하지 않는 경우) 해당 폴더를 대상 경로에 포함 시키십시오. MDMove 명령을 반복하십시오.

같은 것 :

rem Change to folder specified as argument.
pushd %1

rem Check if 'backup' folder exists; if not, create it.
if not exist "xml_Backup" md "xml_Backup"

rem Loop through files in the current folder.
for /R %%F in (*.xml) do (
  rem Create subfolder in 'backup' folder matching this file's name.
  md "xml_Backup\%%~nF"
  rem Move file to that folder.
  move /y "%%~nF.*" "xml_Backup\%%~nF"
)

rem Change back to the original directory we were in when pushd was executed.
popd

함께 뛰다 batchname.bat "c:\folderContainingXMLs".

IE : batchname.bat "X:\folder1\folder2" 또는 batchname.bat ".\folder2"


답변

PowerShell이 ​​옵션 인 경우이 방법을 사용해보십시오. 처음에는 일부 테스트 데이터에서 수행합니다. 아직 테스트하지 않았습니다.

New-Item X:\folder1\folder2\xml_backup -Type Directory
Get-ChildItem X:\folder1\folder2\*.xml |
ForEach-Object {
    $XMLName = $_.BaseName
    New-Item "X:\folder1\folder2\xml_backup\$XMLName" -Type Directory
    Move-Item $_ "X:\folder1\folder2\xml_backup\$XMLName"
}

당신의 가장 큰 문제는, 제가 생각하기에, 당신이이 문제에 역방향으로 접근하고 있다는 것입니다. 원하는 내용 :

  1. 파일 관련 폴더를 만듭니다.
  2. 파일을 특정 폴더로 이동하십시오.
  3. XML 백업 폴더를 만듭니다.
  4. 파일 별 폴더와 그 내용을 XML 백업으로 이동하십시오.

너 뭐야? 할까요 위의 스크립트에서 수행 한 것처럼 다음을 수행해야합니다.

  1. XML 백업 폴더를 만듭니다.
  2. XML 백업 폴더 내에 파일 별 폴더를 만듭니다.
  3. 파일을 적절한 하위 폴더로 이동하십시오.

위의 스크립트를 XML 파일 이상에서 실행하려면 추가 수정이 필요합니다. X:\folder1\folder2 (예 : 인접한 하위 폴더의 다른 XML 파일).