Войти

Показать полную графическую версию : [решено] Список файлов + размер


Voidstranger
30-11-2017, 15:19
Доброго времени суток. Необходимо сделать список файлов с определённым расширением в директории, а также размеры файлов с выводом всего этого дела в текстовый файл. То есть вида:

564 1.log
36 2.log
89 3.log

на данный момент имею такое:
forfiles /P D:\ /M *.log /C "cmd /Q /C for %%1 in (@fsize@file) do echo %%~1">D:\2.log

вот только проблема - выводит с кавычками в виде:

148"1.log"
0"2.log"

Как избавиться от кавычек и между размером и именем файла поставить пробел?

Iska
30-11-2017, 15:45
Voidstranger, Вас не смущает, что в именах файлов могут тоже оказаться пробелы?
for %i in ("d:\*.log") do @echo %~zi %~nxi
Для использования внутри пакетного файла удвойте % и уберите @. Скрытые и системные файлы не учитываются (если сие для Вас существенно — пишите, поменяем код на разбор dir).

P.S. Вывод в файл с тем же расширением и в тот же каталог, что используется при подсчёте, не есть хорошо и правильно.

Voidstranger
30-11-2017, 15:48
Спасибо большое, всё получилось.

И если можно ещё один вопрос. Можно ли как-то из результата команды dir для ftp.exe убрать даты? Пример, dir выводит в тектовый файл список файлов на фтп в виде:

2177416428 Nov 26 22:10 20171127.7z
2182467820 Nov 27 22:08 20171128.7z
2187403500 Nov 28 22:08 20171129.7z
2189732588 Nov 29 22:07 20171130.7z

Нужно удалить в этом текстовом файле даты:

2177416428 20171127.7z
2182467820 20171128.7z
2187403500 20171129.7z
2189732588 20171130.7z

То есть условие что-то вроде "текст от первого до последнего пробела в строке заменить на пробел".

megaloman
30-11-2017, 16:12
Необходимо сделать список файлов с определённым расширением в директории, а также размеры файлов »@Echo Off
Set "FileIn=Z:\Box_In\*.log"
Set "Log=%~dpnx0.txt"

>"%Log%" (FOR %%f IN ("%FileIn%") DO Call :Out "%%f" " %%~zf")
GoTo :Eof

:Out
Set "@Out=%~2"
Call Set "@Out=%%@Out:~-12%%"
Echo %@Out% %~1
GoTo :Eof

Iska
30-11-2017, 16:20
>"Result.txt" (for /f "usebackq tokens=1,4*" %i in ("тектовый файл.txt") do @echo %i %k)

Elven
30-11-2017, 16:21
for /f "tokens=1-2 delims=;" %%A in ('forfiles /m d:\*.log /c "cmd /c echo @file;@fsize"') do echo %%B %%~A

Что-то я припозднился с решением, тут уже и так накидали.

Voidstranger
30-11-2017, 16:27
Ещё раз спасибо всем отписавшимся!




© OSzone.net 2001-2012