Fichier de lots de fenêtres - Suppression du répertoire d'un chemin de fichier

StackOverflow https://stackoverflow.com/questions/19855721

  •  29-07-2022
  •  | 
  •  

Question

J'essaye de rechercher ma base de code pour tous jscript Répertoires, puis obtenez une liste de fichiers relatifs dans ces répertoires à l'aide du script de lot suivant ...

@echo off

setlocal enableextensions enabledelayedexpansion

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S jscripts') DO (
    CD %%G
    CD dev

    SET "currentDir=!cd!"
    IF NOT "!currentDir:~-1!"=="\" SET "currentDir=!currentDir!\"

    FOR /r %%F IN (*.js) DO (
        SET "relativePath=%%F"
        SET "relativePath=!relativePath:%currentDir%=!"

        ECHO !relativePath!
    )
)

Tout fonctionne comme prévu jusqu'à ce qu'il arrive ...

SET "relativePath=!relativePath:%currentDir%=!"

Je peux comprendre quel format j'ai besoin d'écrire ceci pour tourner ...

c:\dir\jscript\dev\file.js

dans...

file.js

Aidez-vous!


Informations Complémentaires

La configuration du répertoire est la suivante

dir
    jscripts
        dev
            file.js
            file2.js
        live
            file.js
            file2.js


dir2
    jscripts
        dev
            file.js
            file2.js
        live
            file.js
            file2.js

Je veux tout trouver jscripts Les répertoires, CD en eux, obtiennent une liste de tous les fichiers JS par rapport au dev annuaire

Était-ce utile?

La solution 2

@echo off
setlocal enableextensions enabledelayedexpansion

rem Where to start
pushd "c:\wherever\global2_root\"

rem Search .....\dev directories
for /f "tokens=*" %%d in ('dir /ad /s /b ^| findstr /e "\\dev"') do (
    rem change to that directory
    pushd "%%~fd"
    echo Now in !cd!
    rem process files inside directory
    for %%f in (*.js) do (
        echo %%f
    )
    rem return to previous directory
    popd
)
rem return to initial directory
popd

rem cleanup 
endlocal

Autres conseils

Pour extraire le nom et l'extension du fichier à partir d'une variable contenant une utilisation complète du chemin %~nx0 un péché

set G=c:\dir\jscript\file.js
echo %~nxG

Citant ce qui suit de Cette réponse à une question similaire

%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file

The modifiers can be combined to get compound results:
%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only

Ceci est une pâte de copie du "pour /?" commande sur l'invite. J'espère que cela aide.

Lié

Top 10 conseils de lot DOS (oui, lot DOS ...) spectacles BatchParams.bat (lien vers la source en tant que Gist):

C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1     =      c:\windows\notepad.exe
%~f1     =      c:\WINDOWS\NOTEPAD.EXE
%~d1     =      c:
%~p1     =      \WINDOWS\
%~n1     =      NOTEPAD
%~x1     =      .EXE
%~s1     =      c:\WINDOWS\NOTEPAD.EXE
%~a1     =      --a------
%~t1     =      08/25/2005 01:50 AM
%~z1     =      17920
%~$PATHATH:1     =
%~dp1     =      c:\WINDOWS\
%~nx1     =      NOTEPAD.EXE
%~dp$PATH:1     =      c:\WINDOWS\
%~ftza1     =      --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top