Пакетный поиск
Имеется главная папка (напр. - "D:\folderA\") с различными файлами и субпапаками разной степени вложения.
Имеется список имен файлов.
Как сделать bat(vbs/js)-файл который создавал бы отчет в виде csv-файла где первой строкой шел бы этот список, а второй список полных имен (полных адресов) этих файлов, напр.:
test1.txt D:\folderA\folderK\test1.txt
test2.pdf D:\folderA\folderW\test2.pdf
test3.doc D:\folderA\folderX\test3.doc
....................................
Т.е. речь идет о пакетном поиске с отчетом.
|
В принципе я имел ввиду, что имя файла (test1.txt) и его полное имя (D:\folderA\folderK\test1.txt) будут отделены табулятором (или точкой с запятой).
И второе, о чем я не сказал, это что имена файлов и папок будут на русском, включая пробелы.
Я попробовал Ваш скрипт. Он делает файл содержащий имена и полные имена всех файлов в папке (русские имена выводятся как кракозябры и не перекодируются). Но это не решает мою задачу, мне нужно найти только те, что в списке. Есть ли решение для такой задачи?
|
Цитата:
Цитата ruslaw
В принципе я имел ввиду, что имя файла (test1.txt) и его полное имя (D:\folderA\folderK\test1.txt) будут отделены табулятором (или точкой с запятой). »
|
Вставляйте в пакетный файл между именем и полным именем вместо пробела символ табуляции или точку с запятой.
Цитата:
Цитата ruslaw
И второе, о чем я не сказал, это что имена файлов и папок будут на русском, включая пробелы.
Я попробовал Ваш скрипт. Он делает файл содержащий имена и полные имена всех файлов в папке (русские имена выводятся как кракозябры и не перекодируются). »
|
Пробелы не бывают на русском. «Кракозябры» — это обычная OEM/866, читается любым приличным редактором без перекодировки. В принципе, не проблема сделать вывод в очевидно ожидаемой Вами ANSI/1251, переключив в пакетном файле кодовую страницу по «chcp 1251». Кодировка файла-списка, надо полагать, у Вас тоже в ANSI/1251? Но лучше не заниматься мазохизмом и держать и файл-список, и, само-собой, пакетный файл в умолчальной кодировке OEM/866.
Пробуйте:
читать дальше »
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFileList=FileList.txt
set sSourceFolder=E:\Песочница
set sOutFile=OutFile.txt
if exist "%sFileList%" (
if exist "%sSourceFolder%\." (
>nul copy nul "%sOutFile%"
for /f "usebackq delims=" %%i in ("%sFileList%") do (
for /f "usebackq delims=" %%j in (`2^>nul dir /s /b /a:-d "%sSourceFolder%\%%~i"`) do (
>>"%sOutFile%" echo %%~nxj %%~j
)
)
) else (
echo Can't find source folder [%sSourceFolder%].
)
) else (
echo Can't find file list [%sFileList%].
)
endlocal
exit /b 0
|
Отлично работает, спасибо!
|
Время: 04:48.
© OSzone.net 2001-