Войти

Показать полную графическую версию : Копирование одноимённых файлов


BloodDick
30-04-2012, 20:08
Ребят, посдкажите как сделать так, чтобы одноимённые файлы, которые я задал для поиска, сохранялись в папку все. А не только один файл.
Приведу пример : я задал найти на компьютере текстовый документ "Музыка", этот документ есть на диске "C" и на диске "D"... А в папку сохранения сохраняется только один файл. Надеюсь доходчиво объяснил)

Iska
30-04-2012, 20:50
Надеюсь доходчиво объяснил) »
Нет:
я задал найти на компьютере текстовый документ "Музыка" »
Как именно задали?

Foreigner
30-04-2012, 20:57
BloodDick, надо копировать с переименованием или с другим путем. Как ты видишь конечную реализацию?

BloodDick
30-04-2012, 20:58
@ECHO OFF
dir "C:\музыка.txt" "D:\музыка.txt"
S /B > c:\filelist.txt d:\filelist.txt f:\filelist.txt
md d:\13
for /F "tokens=*" %%i in (c:\filelist.txt) do copy /Y "%%i"

"D:\13\%%~nxi"
del c:\filelist.txt
del d:\filelist.txt
del f:\filelist.txt

чтобы например сохранялось: Музыка, музыка(1).
как то так.

а сохраняется только музыка. Тоесть один файл.

Foreigner
30-04-2012, 21:03
как то так. »

@echo off
setlocal

2>nul md "d:\folder"
pushd "d:\folder"

for %%i in (c d f) do (

for /f "tokens=*" %%j in (' dir /b /s /a-d "%%i:\Музыка.txt" ') do call:copy "%%j"

)

popd
goto:eof

:copy

if "%~dp1"=="d:\folder\" (goto:eof)
set "file="
if not exist "%~nx1" copy %1 && goto:eof

:check

set /a cnt+=1
set "ind=000%cnt%"
set "file=%~n1_[%ind:~-4%]%~x1"

if exist "%file%" goto:check

copy %1 "%file%"

Где d:\folder -- путь для копирования

BloodDick
30-04-2012, 21:08
спасибо, это всё понел, всё получилось. А где сдесь прописано где именно ищет? for %%i in (c d f) - это?

Ребят всё разобрался, благодарю)

Foreigner
30-04-2012, 21:12
А где сдесь прописано где именно ищет? »

for %%i in (c d f) -- диски на которых ищет

BloodDick
30-04-2012, 21:15
Можете ещё подсказать, что прописать чтобы искало файлы , по заданому слову. Тоесть чтобы находила и копировала, все файлы к примеру со словом "Яблоко".

Iska
30-04-2012, 21:44
BloodDick, для русского языка предусмотрено несколько кодировок.

BloodDick
30-04-2012, 21:48
BloodDick, для русского языка предусмотрено несколько кодировок. »
Хотябы одну из них)

Foreigner
30-04-2012, 21:55
все файлы к примеру со словом "Яблоко". »
В названии или с содержимым?

BloodDick
30-04-2012, 21:56
с содержимым.

к примеру название файла "Новый текстовый документ"
Но он скопировался в папку потому что у него есть слово которое я задал "Яблоко".
Как такое осуществить?

Foreigner
30-04-2012, 22:16
с содержимым. »

если искомое слово кириллическое, то тогда можно с помощью grep (http://gnuwin32.sourceforge.net/packages/grep.htm), т.к. findstr не находит

grep -rli "яблоко" *.*
findstr /m /s /i "test" *.*

BloodDick
30-04-2012, 22:22
другово способа нет?

Iska
01-05-2012, 00:03
Foreigner, в какой кодировке будет вестись поиск в:
grep -rli "яблоко" *.*
?

Anonymоus
01-05-2012, 03:05
Iska, в той, в которой сохранен bat-файл. Если это UTF-8, надо BOM при сохранении отключать.

Iska
01-05-2012, 03:11
Anonymоus, спасибо, ясно. В текущей кодировке.




© OSzone.net 2001-2012