Показать полную графическую версию : [решено] Список файлов + размер
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"
Как избавиться от кавычек и между размером и именем файла поставить пробел?
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
>"Result.txt" (for /f "usebackq tokens=1,4*" %i in ("тектовый файл.txt") do @echo %i %k)
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.