Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Простой батник для копирования |

30.11.2009, 12:49
|
|
Познающий
Регистрация: 28.07.2005
Сообщений: 61
Провел на форуме: 167021
Репутация:
19
|
|
Простой батник для копирования
Постала задача написать скрипт типа bat.
Надо чтобы он копировал из одного каталога в другой только файлы с сегодняшней датой. Причем если в целевом каталоге уже есть файлы с таким именем чтобы НЕ заменял их!
Я с батниками не дружу. Если кому не сложно помогите!
|
|
|

30.11.2009, 13:37
|
|
Moderator - Level 7
Регистрация: 12.07.2008
Сообщений: 1,705
Провел на форуме: 5914048
Репутация:
1350
|
|
@echo off
for /F "tokens=1-3,4*" %%a in ('dir C:\Windows /a:-d ^| findstr "%date%"') do (
(dir PATH2 | findstr "%%d") && copy %%d PATH2\%%dbak || copy %%d PATH2\%%d )
pause
C:\Windows - заменить откуда брать файлы
PATH2 куда скопировать
%%d - имя файла
%%dbak - если есть такое имя файла
Для начала лучше протестировать на других файлах.
Последний раз редактировалось SpangeBoB; 30.11.2009 в 18:06..
|
|
|

30.11.2009, 14:09
|
|
Познающий
Регистрация: 28.07.2005
Сообщений: 61
Провел на форуме: 167021
Репутация:
19
|
|
А если я хочу чтобы просто все файлы (с текущим числом) копировались с этой деректории чтобы ненадо было показывать названия файлов.
Одним словом я не понял эти параметры для чего -
%%d - имя файла
%%dbak - если есть такое имя файла
|
|
|

30.11.2009, 18:08
|
|
Moderator - Level 7
Регистрация: 12.07.2008
Сообщений: 1,705
Провел на форуме: 5914048
Репутация:
1350
|
|
Сообщение от Ig-FoX
А если я хочу чтобы просто все файлы (с текущим числом) копировались с этой деректории чтобы ненадо было показывать названия файлов.
Одним словом я не понял эти параметры для чего -
%%d - имя файла
%%dbak - если есть такое имя файла
Так и именно это делает скрипт,копирует файлы из заданной папки с текущей датой ,в конечную папку.
%%d в данном случае будет браться имя файла и копироваться,а если в конечной папке существует файл с таким же именем,то в конце просто добавится bak.
Так что переменную %%d не надо изменять,только если требуется добавить что либо,если файл существует,вместо bak свое.
Ps. Мне нравится powershell,который гораздо функциональнее,чем ограниченные возможности bat.
Хотя по умолчанию присутствует в системе начиная с Windows Server 2008,2008R2 и 7. Скрипты выразительнее и проще.
$dstFolder = "C:\Users\Александр\1\" # Директория куда копируются файлы
$srcFolder = "C:\Users\Александр\" # Директория откуда копируются файлы
$ListFiles = Get-ChildItem $dstFolder | ForEach-Object {$_.name} #Помещаем список файлов,для последующего сравнения
Get-ChildItem $srcFolder -Force | Where-Object {!($_.PsIsContainer) -and $_.lastwritetime.ToShortDateString() -eq (get-date).ToShortDateString() } | `
Foreach-Object {
if ( $ListFiles -contains $_.name) # Проверяем если в конечной директории совпадающий по имени файл.
{
Copy-Item "$srcFolder$_" -Destination "$dstFolder$((get-date).toshortdatestring()).$_" # Если файл имеет тоже имя,то переменовываем его,например: 30.10.2009.1.txt
}
else { Copy-Item "$srcFolder$_" -Destination "$dstFolder" }
}
Последний раз редактировалось SpangeBoB; 30.11.2009 в 19:09..
|
|
|

01.12.2009, 19:36
|
|
Познающий
Регистрация: 28.07.2005
Сообщений: 61
Провел на форуме: 167021
Репутация:
19
|
|
Все, понял, спасибо!
На счет powershell не знал. У меня как раз 2008. Попробою и так.
Только я бы не назвал ее проще.
Последний раз редактировалось zythar; 01.12.2009 в 23:46..
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Наши статьи, FAQи, обзоры, релизы.
|
оlbaneс |
Социальные сети |
11 |
01.05.2010 16:44 |
|
Books
|
PSalm69 |
Избранное |
248 |
27.10.2009 04:52 |
|
Коды
|
silveran |
Сотовый фрикинг |
4 |
18.10.2005 14:37 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|