cmd - Windows kommando til at søge bibliotek for et bestemt navn, og flyt derefter sine filer til forældre

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har forsøgt at få en kommando til at arbejde:


for /r /d \%d in (*) do if /I "\%~nxd"=="\_Success" for /f \%f in (\%d*) do if exist \%f move \%f ..


Jeg har til hensigt at kommandoen skal gøre følgende:



  1. Efterkør katalogtræet og find mapper, der hedder '\_Success'

  2. Flyt filer (hvis de findes) til overordnet mappe.



Jeg har brugt help og de følgende tråde for at få mig i gang:


Hvordan flyttes alle filer med specifik udvidelse fra alle undermapper til deres forælder ved hjælp af CMD?


Batch Script til at finde en mappe inde undermapper og få mappebane


Men jeg får nogle fejl tilbage i min produktion:


C:migration\_filesvault>if /I "document" == "\_Success" for /F \%f in (C:migration\_filesvaultdocument*) do if exist \%f move \%f ..
...
C:migration\_filesvault>if /I "\_Success" == "\_Success" for /F \%f in (C:migration\_filesvaultfaqs\_Success*) do if exist \%f move \%f ..
The system cannot find the file C:migration\_filesvaultfaqs\_Success*.
C:migration\_filesvault>if /I "\_Success" == "\_Success" for /F \%f in (C:migration\_filesvaultpatch\_Success*) do if exist \%f move \%f ..
The system cannot find the file C:migration\_filesvaultpatch\_Success*.


EDIT -
Det ser ud til at virke mest, bortset fra at filen flyttes til arbejdsmappen.

Bedste reference


Takket være @mihai\_mandis med sin løsning på dette link:


batch-flytende fil fra undermappe til overordnede mappe


Jeg ændrede det lidt til følgende:


@echo  off
setlocal enabledelayedexpansion

for /r /d \%\%d in (*) do (
  if /I "\%\%~nxd"=="\_Success" (
    for /f \%\%f in ("\%\%d*") do (
      call :GETPARENTPARENT "\%\%f" ret
      echo ret=!ret!
      move /Y "\%\%f" "!ret!"
    )
  )
)

goto:EOF

:GETPARENTPARENT
set fileP=\%1
echo received=\%fileP\%
for \%\%a in (\%fileP\%) do (
    set parent=\%\%~dpa
    cd !parent!..
    set PPPath=!cd!
    for \%\%x in ("!PPPath!") do (
         set "\%~2=\%\%~dpnx"
    )
)
GOTO:EOF