Файл пакета окон - удаление каталога из пути файла

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

  •  29-07-2022
  •  | 
  •  

Вопрос

Я пытаюсь искать свою кодовую базу для всех JScript каталоги, а затем получить список относительных файлов в этих каталогах, используя следующий пакетный скрипт ...

@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!
    )
)

Все работает, как и ожидалось, пока не дойдет до ...

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

Я могу выяснить, в каком формате мне нужно написать это, чтобы повернуть ...

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

в...

file.js

Пожалуйста помоги!


Дополнительная информация

Настройка каталога выглядит следующим образом

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


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

Я хочу найти все Jscripts каталоги, CD в них, получите список всех файлов JS относительно разработчика каталог

Это было полезно?

Решение 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

Другие советы

Чтобы извлечь имя и расширение файла из переменной, содержащей полное использование пути %~nx0 как в

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

Цитируя следующее из Этот ответ на аналогичный вопрос

%~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

Это вставка для копирования из "for /?" команда по приглашению. Надеюсь, поможет.

Связанный

10 лучших партийных советов DOS (да, партия DOS ...) шоу BatchParams.bat (Ссылка на источник как суть):

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top