Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Вывод имени файла без первого символа (http://forum.oszone.net/showthread.php?t=263288)

maxvtb 27-06-2013 15:07 2175259

Вывод имени файла без первого символа
 
Добрый день! Подскажите, плиз, имеется -n количество файлов такого типа
012345b01.txt
074545c02.txt
........
045745dx1.txt

Как вывести имя файла без 1-го символа, в каждом файле он 1 и тот же, это "0", изменять имя файла и его содержимое крайне не рекомендуется!
Заранее благодарю!

Iska 27-06-2013 15:40 2175280

Цитата:

Цитата maxvtb
Как вывести имя файла без 1-го символа »

Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?

В любом случае всё сведётся к подобному:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFile=012345b01.txt
echo %sFile:~1%

endlocal
exit /b 0


megaloman 27-06-2013 15:46 2175285

если батник в той же папке что и файлы,то
Код:

@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!

Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке

maxvtb 28-06-2013 05:46 2175671

Цитата:

Цитата megaloman
если батник в той же папке что и файлы,то
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
FOR %%f IN (0*.txt) DO Set Name=%%~nxf&Echo !Name:~1!
Иначе в скобках укажите маску файлов с полным именем, для надёжности в кавычках и, если есть русские символы, батник должен быть в 866 кодировке
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение »

Данный вариант выводит полное имя файла

Цитата:

Цитата Iska
Это зависит от того, где «имеется» и как Вы получаете эти имена: посредством set, for… Как?
В любом случае всё сведётся к подобному:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
set sFile=012345b01.txt
echo %sFile:~1%
endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники: »


Спасибо, Ваш, вариант хорошо работает, теперь бы это в цикл организовать....хотя медленно работать будет, вообщем принцип такой ...выводим имя файла без 1 символа , проверяем на наличие такого же файла (без 1 го символа) в другой папке и если нет, то копируем ....а файликов ежедневно около 200 и интервал между запусками 5 мин :)

да, еще, это процедурка будет вставлена в основной батник, который помимо перекладывания проверяет инфу в каждом файле, вернее на наличие определенной строки и в зависимости от этого меняет 1 символ в имени файла :) ..вот такая заморочка

maxvtb 28-06-2013 07:03 2175682

Вот если бы как то так в одну строку, но где то ошибка кроется
for /r %%a in (0????????.txt) do set name=%%a & echo %name:~1% || if NOT EXIST ?%%~na.txt copy ?%%a и путь куда

Foreigner 28-06-2013 07:22 2175685

Цитата maxvtb:
Вот если бы как то так в одну строку»
Зачем? Это же неудобно, придется использовать enabledelayedexpansion, да и читаемость страдает:
Код:

@echo off
setlocal enabledelayedexpansion

for /f %%i in ('dir /b c:\folder-1\*.txt') do set "name=%%i" && if not exist c:\folder-2\!name:~1! (copy c:\folder-1\%%i c:\folder-2\!name:~1!)


maxvtb 28-06-2013 07:42 2175689

как удобнее???

Foreigner 28-06-2013 07:48 2175691

maxvtb,
Код:

@echo off
setlocal

pushd "c:\folder-1"
for /f "tokens=*" %%i in ('dir /b *.txt') do call:copy "%%i"
popd
goto:eof

:copy
set "name=%~1"
if not exist "c:\folder-2\%name:~1%" (copy %1 "c:\folder-2\%name:~1%")


maxvtb 28-06-2013 08:12 2175696

Респект :yahoo:


Время: 21:37.

Время: 21:37.
© OSzone.net 2001-