|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка соответствия имени файла |
|
CMD/BAT - [решено] Проверка соответствия имени файла
|
Ветеран Сообщения: 1344 |
Профиль | Отправить PM | Цитировать Нужно сделать так: если имя переданного файла (%1) содержит только символы латинского алфавита (A-Z,a-z), подчёркивания (_) и тире (-), а также не больше 60 символов, то надо только записать в какую-нибудь переменную исходное имя файла (для дальнейшего использования), а если это условие не выполнится, то файл надо скопировать во временную папку (это я сам знаю, как делается), затем его переименовать по шаблону file_YEAR-MONTH-DAY_HOUR-MINUTE-SECOND.ext, где YEAR, MONTH, DAY, HOUR, MINUTE, SECOND - текущие год, месяц, день, час, минута и секунда, ext - изначальное расширение файла, и записать в переменную уже новое имя файла. Помогите, пожалуйста
|
|
Отправлено: 23:26, 02-08-2011 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать @echo off set DIR=c:\TEMP set "$F="& set "$1=%~n1" SetLocal EnableDelayedExpansion echo:!$1!|findstr/xrc:"[A-Za-z_-]*"|findstr/vrc:".............................................................">Nul&& set "$F=+" EndLocal& set "$F=%$F%" if defined $F ( set "VAR=%~n1" call echo VAR=%%VAR%% ) else ( copy "%~1" "%DIR%\" ren "%DIR%\%~nx1" "%~n1_%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%%~x1" ) |
Отправлено: 11:42, 03-08-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Еще вариант:
@echo off setlocal enabledelayedexpansion set "fn=%~n1" set "tempdir=z:\tmp\" if "%fn:~60,1%"=="" (echo=%fn%|findstr "[^A-Za-z_-]">nul||set "name=%~1") if not defined name ( for /f "skip=1 tokens=1 delims=." %%d in ('wmic os get localdatetime') do set "dt=%%d" set "name=%fn%_!dt:~0,4!-!dt:~4,2!-!dt:~6,2!_!dt:~8,2!-!dt:~10,2!-!dt:~12,2!%~x1" copy "%~1" "%tempdir%" ren "%tempdir%%~nx1" "%name%" ) echo %name% pause>nul |
Последний раз редактировалось SendMessage, 03-08-2011 в 15:17. Отправлено: 15:05, 03-08-2011 | #3 |
Ветеран Сообщения: 1344
|
Профиль | Отправить PM | Цитировать спасибо попробую оба варианта
|
Отправлено: 18:52, 03-08-2011 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - проверка по имени папки | AntiZero | Скриптовые языки администрирования Windows | 0 | 24-03-2011 12:16 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 | |
CMD/BAT - Скачивание файла и проверка на отличия от файла на сервере. | maslovt | Скриптовые языки администрирования Windows | 2 | 08-05-2010 19:54 | |
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" | permas | Microsoft Windows 2000/XP | 2 | 20-02-2010 19:30 | |
Загрузка - Проверка на битость файла | D-Skane | Microsoft Windows 2000/XP | 3 | 24-06-2008 16:43 |
|