Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: 19101981
Дата сообщения: 21.05.2007 14:30
Здравствуйте! Подскажите пожалуйста, как скопировать определенный файл в только что созданную папку с датой. Папка создавалась через bat-файл
Автор: Elroir
Дата сообщения: 21.05.2007 14:44
19101981
Не совсем понимаю - если папку создали, то известно ее название. Тогда копируем командой copy:

Код:
copy "полный_путь_к_файлу" "полный_путь_к_папке\"
например
copy "c:\file.txt" "d:\210507\"
Автор: Ex0dus
Дата сообщения: 21.05.2007 19:36
Elroir
хотелось бы чтобы формат даты был такой:
210507
а со скриптом создается папка такого вида
2152007
и еще
я правильно изменил скрипт в конце?
DEL /q tmp.vbs
md %TwoDaysLater%
move G:\temp\*.nnn %TwoDaysLater%>nul
copy %Today%\*.nnn G:\temp\>nul
Автор: Elroir
Дата сообщения: 21.05.2007 20:07
Ex0dus

Цитата:
хотелось бы чтобы формат даты был такой: 210507


Код:
@echo off
setlocal enabledelayedexpansion
echo if weekday(date)=vbFriday then>tmp.vbs
echo wscript.echo day(date) ^& " " ^& month(date) ^& " " ^& year(date) ^& " " ^& day(date+3) ^& " " ^& month(date+3) ^& " " ^& year(date+3)>>tmp.vbs
echo else>>tmp.vbs
echo wscript.echo day(date) ^& " " ^& month(date) ^& " " ^& year(date) ^& " " ^& day(date+2) ^& " " ^& month(date+2) ^& " " ^& year(date+2)>>tmp.vbs
echo end if>>tmp.vbs
FOR /F "tokens=1-6" %%A IN ('cscript tmp.vbs //Nologo') DO (
set "TodayDay=%%A"
set "TodayMonth=%%B"
set "TodayYear=%%C"
set "TwoDaysLaterDay=%%D"
set "TwoDaysLaterMonth=%%E"
set "TwoDaysLaterYear=%%F"

if !TodayDay! LSS 10 set "TodayDay=0!TodayDay:~-1!"
if !TodayMonth! LSS 10 set "TodayMonth=0!TodayMonth:~-1!"
if !TwoDaysLaterDay! LSS 10 set "TwoDaysLaterDay=0!TwoDaysLaterDay:~-1!"
if !TwoDaysLaterMonth! LSS 10 set "TwoDaysLaterMonth=0!TwoDaysLaterMonth:~-1!"
set "TodayYear=!TodayYear:~-2!"
set "TwoDaysLaterYear=!TwoDaysLaterYear:~-2!"
)
set "Today=%TodayDay%%TodayMonth%%TodayYear%"
set "TwoDaysLater=%TwoDaysLaterDay%%TwoDaysLaterMonth%%TwoDaysLaterYear%"
DEL /q tmp.vbs
md %TwoDaysLater%
move G:\temp\*.nnn %TwoDaysLater%>nul
copy %Today%\*.nnn G:\temp\>nul
Автор: Ex0dus
Дата сообщения: 21.05.2007 23:35
Elroir
и еще одну поправку плиз:
папки с датами в названии лежат в G:\temp\bak
скрипт же я так понимаю читает их из корня G:\temp\

и еще вопрос:
я так понимаю скрипт будет работать только если его положить в папку G:\temp\?

где учат такому гурускриптингу?
Автор: Elroir
Дата сообщения: 22.05.2007 00:04
Ex0dus

Цитата:
и еще одну поправку плиз: папки с датами в названии лежат в G:\temp\bak
скрипт же я так понимаю читает их из корня G:\temp\

Меняем последние 3 строчки:

Код:
md G:\temp\bak\%TwoDaysLater%
move G:\temp\*.nnn G:\temp\bak\%TwoDaysLater%>nul
copy G:\temp\bak\%Today%\*.nnn G:\temp\>nul
Автор: Igor99999
Дата сообщения: 22.05.2007 15:59
Ввел новую переменную среды %variable% с путем D:/Files.
Как сделать, чтобы при создании ярлыка на любую папку в директории D:/Files, путь в ярлыке выглядел не так D:/Files/Papka, а так %variable%/Files/Papka? То есть вопрос в том, чтобы это происходило автоматом, а не менять вручную каждый раз.
Автор: Elroir
Дата сообщения: 22.05.2007 16:13
Igor99999

Цитата:
Как сделать,...

Насколько я знаю - никак.
Автор: Igor99999
Дата сообщения: 22.05.2007 16:29
Elroir

А почему после ввода переменной компьютер начинает подвисать на 1-2 мин при попытке обратиться к свойствам ярлыка? Ярлык ссылается на место, прописанное в переменной.
Автор: Elroir
Дата сообщения: 22.05.2007 16:44
Igor99999
Не знаю почему у тебя подвисает - у меня все работает нормально.
Что именно ты меняешь в ярлыке?
Автор: Igor99999
Дата сообщения: 22.05.2007 16:59
Elroir

Переменную создал через Мой компьютер - свойства - дополнительно - переменные среды. Переменная работает.
G:/Files/Papka одно и то же, что и %variable%/Files/Papka
Подвисает не когда меняю, а когда нажимаю свойства ярлыка или даже невозможно создать ярлык из-за подвисания. Если переменная не прописана, то все нормально. На это может влиять размер диска G 250 Гб?

Автор: VovaII
Дата сообщения: 22.05.2007 17:41
Подскажите как решить две проблемки:
1) Как батником из папки удалить подпапки?
(Поставил батник в автозагрузку, чтобы каждый раз при старте чистил папку TMP, не спрашивая подтверждения. Но он чистит только файлы оттуда, а папки остаются.)

2) Как сделать, чтобы батник сам закрывался?
(Через батник запускается программа и остается висеть в памяти(так и нужно), но при этом окно батника не закрывается, а продолжает висеть.)

Спасибо.
Автор: Elroir
Дата сообщения: 22.05.2007 17:52
VovaII

Цитата:
1) Как батником из папки удалить подпапки?


Код:
cd /d c:\temp
rd /s /q c:\temp 2>nul
Автор: Igor99999
Дата сообщения: 22.05.2007 20:18
Как должен выглядить скрипт, который:
1. Сделает ярлыки ко всем папкам (подпапкам) в определенной директории
2. Сложит все ярлыки в одну директорию
3. В свойствах ярлыка поставит вместо пути абсолютного путь относительный согласно прописанной переменной (%variable%/).
Автор: Elroir
Дата сообщения: 22.05.2007 21:45
Igor99999

Цитата:
Как должен выглядить скрипт

Примерно так:

Код:
@echo off
md shortcuts 2>nul
for /f "tokens=*" %%a in ('dir /b /ad "%variable%\"') do (
nircmdc shortcut "~x25variable~x25\%%a" ".\shortcuts" "%%a"
)
Автор: Igor99999
Дата сообщения: 22.05.2007 22:24
Elroir

Спасибо, скрипт работает, только он делает ярлыки ко всем папкам в корневой директории, а нужно еще ко всем поддиректориям, ко всему дереву поддиректорий в корневой директории. Это возможно?
Автор: find
Дата сообщения: 23.05.2007 03:12
может не в тему, но все-таки:
у меня в Windows XP не работает короткий путь C:\Progra~1\
может знает кто решение проблемы - перерыл реестр и инфу в инете - так и не решилось пока.
Автор: Rurik
Дата сообщения: 23.05.2007 06:32
find
пользуйся переменной %ProgramFiles%
Автор: Maza Faka
Дата сообщения: 23.05.2007 07:27
Igor99999

Цитата:
нужно еще ко всем поддиректориям

В коде Elroir-а в строке ('dir /b /ad "%variable%\"') добавь ключ "/s" (для всех вложенных каталогов)
dir /s /b /ad "%variable%\
Автор: Igor99999
Дата сообщения: 23.05.2007 07:49
Maza Faka

С ключом /S ерунда получается. На поддиректории ярлыки делаются, но ярлыки получаются вида %variable%\D:\Files\Papka, а должны быть такого вида %variable%\Papka. Естественно ярлыки при этом не рабочие.
Автор: VovaII
Дата сообщения: 23.05.2007 09:01
Elroir
Спасибо!
Вопрос:

Цитата:
rd /s /q c:\temp 2>nul

Зачем тут 2?
Автор: KapralBel
Дата сообщения: 23.05.2007 09:09
VovaII
2>nul - перенаправление ошибок в 0, что бы не светились
Автор: mozers
Дата сообщения: 23.05.2007 18:51
ALL
Вопрос: Почему такой бесхитростный пакетник
Код: @ping -n 1 128.0.0.1>nul && IF %errorlevel% == 0 (ECHO OK) ELSE (ECHO No)
Автор: igor_andreev
Дата сообщения: 23.05.2007 19:48
mozers
Команда после "&&" выполняется, только если предыдущая команда(до &&) завершилась успешно.

@ping -n 1 128.0.0.1>NUL & IF ERRORLEVEL 1 (ECHO NO) ELSE ECHO OK

Автор: mozers
Дата сообщения: 23.05.2007 21:09
igor_andreev
С "&&" я лопухнулся - согласен, но почему интересно если тупо заменить моем варианте "&&" на "&" он так и не работает?
Понимаю, что дело в сравнении %errorlevel% == 0 (если это заменить на твой вариант - ERRORLEVEL 1 - то все работает) но разве так, как сравниваю я - НЕЛЬЗЯ???
Автор: igor_andreev
Дата сообщения: 23.05.2007 22:33
mozers

Цитата:
но разве так, как сравниваю я - НЕЛЬЗЯ???

C "нормальными" командами - можно. А ping.exe - дура В Windows 2000 она вообще никаких errorlevel не дает.
Пробовал свой вариант не из батника, а в консоли запустить? У меня XP, один раз пишет OK, потом все NO.

Обычно все примеры с ping идут с проверкой IF ERRORLEVEL 1, я так и пишу, чтоб не заморачиваться.

Автор: find
Дата сообщения: 24.05.2007 01:26

Цитата:
find
пользуйся переменной %ProgramFiles%


спасибо конечно, только это не решение проблемы.
такой путь C:\Progra~1\ просто обязан работать в системе.
Автор: utka00
Дата сообщения: 24.05.2007 04:40
Опять мне требуется помощь)
Нужен батник/прога который бы очищал заданную папку через некоторые промежутки времени. Возможно ли такое осуществить?
Заранее спасибо
Автор: Maza Faka
Дата сообщения: 24.05.2007 07:30
utka00
Например нужно очищать папку "c:\temp" каждые 10 минут

Код:
@echo off
:del_
pushd C:\Temp
rd /s /q C:\Temp 2>nul
ping -n 601 localhost>nul
goto del_
Автор: utka00
Дата сообщения: 24.05.2007 08:31
Maza Faka
Болбшое спасибо, то что надо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.