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

Показать сообщение отдельно

Ветеран


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

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


Цитата use809:
Где-то нужно поставить кавычки в скрипте или что-то типа этого? »


Практически угадали. Нужно добавить кавычки, тильду и точку с запятой:


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

set "csv=example.csv"

for /f "delims=" %%i in ('2^>nul dir/a-d/b') do (
 set "x=%%~ni"
 for %%j in ("!x:, =" "!") do <"%csv%" (
  for /f "tokens=2 delims=;" %%k in ('find/i "%%~j;") do (
   if defined y (set "y=!y!, %%k") else (set "y=%%k")
  )
 )|| set "y=!x!"
 ren "%%i" "!y!%%~xi"& set "y="
)

endlocal
exit/b

.




Но, как выяснил, это тоже не панацея, так как в случае одновременного наличия в CSV-файле строк типа "dysithamnus_leucostictus;White-spotted Antvireo" и "bla-bla-bla_dysithamnus_leucostictus;White-streaked Antvireo (White-streaked)" файл "dysithamnus_leucostictus.txt" также будет переименован некорректно.



Выход нашёл в использовании команды "FINDSTR" вместо команды "FIND":


Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

set "csv=example.csv"

for /f "delims=" %%i in ('2^>nul dir/a-d/b') do (
 set "x=%%~ni"
 for %%j in ("!x:, =" "!") do <"%csv%" (
  for /f "tokens=2 delims=;" %%k in ('more^| findstr/bilc:"%%~j;"') do (
   if defined y (set "y=!y!, %%k") else (set "y=%%k")
  )
 )|| set "y=!x!"
 ren "%%i" "!y!%%~xi"& set "y="
)

endlocal
exit/b

,
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:33, 12-10-2015 | #8