Имя пользователя:
Пароль:
 

Название темы: [решено] Пакетный поиск
Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:10, 03-10-2013 | #3

Название темы: [решено] Пакетный поиск