Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] dir вывод без начальной директории (http://forum.oszone.net/showthread.php?t=214102)

Starter1 26-08-2011 13:40 1739713

dir вывод без начальной директории
 
В общем такая вот проблема: Используя команду dir /b /s %sFolderName%\*.ltx
Но есть ли такая возможность выводить без начальной директории то есть без %sFolderName%.

Допустим лежат у нас файлы в D:\Конфиги это и есть %sFolderName%, и лежит файл D:\Конфиги\тратата\файл.ltx ,
нужно чтобы выводилось вот только это это: тратата\файл.ltx .
Что нужно сделать?

Заранее спасибо :)!

Iska 26-08-2011 15:52 1739762

Starter1, можно попробовать так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=D:\Конфиги\

for /f "delims=" %%i in ('dir /b /s "%sFolder%*.ltx"') do (
        set sValue=%%i
        echo !sValue:%sFolder%=!
)

endlocal
exit /b 0


Starter1 26-08-2011 20:54 1739937

Iska, Спасибо большое всё работает!

megaloman 27-08-2011 18:24 1740482

У Iska сделано очень красиво :good: , хотя я бы добавил в Dir еще ключ /A:-D (это актуально, если и директория имеет расширение, совпадающее с расширением файлов. Или маска файлов *.*). Либо, как у Iska, но без Dir
Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
cls

Set F=D:\Delete\Конфиги
FOR /R "%F%" %%i IN (*.ltx) DO Set S=%%i & Echo !S:%F%\=!

Жаль выбрасывать своё решение, поэтому привожу свои варианты.
Если уровень вложенности директории тратата извесен, то, например, для приведенного вами случая
Код:

@Echo Off
cls
Set F=D:\Конфиги
FOR /F "usebackq tokens=2* delims=\" %%i IN (`DIR "%F%\*.ltx" /B /S /A-D`) DO Echo %%j

для пути с другой вложенностью, например,
Код:

@Echo Off
cls
Set F=D:\Delete\Конфиги
FOR /F "usebackq tokens=3* delims=\" %%i IN (`DIR "%F%\*.ltx" /B /S /A-D`) DO Echo %%j

И, если заранее вложенность директории неизвестна и есть гарантированно свободная буква для диска
Код:

@Echo Off
cls
Set F=D:\Delete\Конфиги

Subst Z: %F%
FOR /F "usebackq tokens=1* delims=\" %%i IN (`DIR Z:\*.ltx /B /S /A-D`) DO Echo %%j
Subst Z: /D


Iska 27-08-2011 20:51 1740562

Цитата:

Цитата megaloman
хотя я бы добавил в Dir еще ключ /A:-D (это актуально, если и директория имеет расширение, совпадающее с расширением файлов. Или маска файлов *.*). »

Верное замечание. Я не обратил на это внимания, взяв маску напрямую из #1, что, конечно, неправильно.


Время: 18:05.

Время: 18:05.
© OSzone.net 2001-