Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как убрать сокращение имени папки в пути к файлу?

Ответить
Настройки темы
CMD/BAT - [решено] Как убрать сокращение имени папки в пути к файлу?

Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


вот часть кода
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
SET f=%~dp0
...
echo Расположение: "%f%" >> "%f%body.txt"
В итоге зачастую в файл записывается так: Расположение: E:\CONSFL~1\
А надо чтобы полностью имя папки отображалось.

Отправлено: 22:54, 07-09-2014

 

Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Iska, вот пример http://photo.qip.ru/photo/virtue-x/4...108348627.jpg? http://photo.qip.ru/photo/virtue-x/4...108348614.jpg?
Операционная система: Windows 7 Professional (x64)
в отчете мне приходит:
Код: Выделить весь код
Расположение К+: D:\CONSUL~1\cons.exe

Отправлено: 18:23, 08-09-2014 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


V!RTuE, моё предположение про рабочую папку не подтверждается.

Но я как-то не понял: в задании указан пакетный файл, а приходит Вам путь, указывающий на исполняемый файл. Придётся-таки Вам показывать Ваш полный код.

Отправлено: 19:20, 08-09-2014 | #12


Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Iska:
Но я как-то не понял: в задании указан пакетный файл, а приходит Вам путь, указывающий на исполняемый файл. Придётся-таки Вам показывать Ваш полный код. »
потому что в коде записано так
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
if "%1_"=="_" (START /MIN CMD.EXE /C "%~s0" any_word & EXIT)
COLOR 1A
SET f=%~dp0
IF EXIST "%f%CONS.EXE"     FOR /f "tokens=*" %%i in ('dir /b "%f%CONS.exe"')     do SET ZM=%%i
SET CONS0=%f%%ZM%
echo Расположение К+: %CONS0% >> "%f%body.txt"
это часть кода, которая поясняет что к чему. полную версию батника отправлю сейчас отправил в лс на почту

Последний раз редактировалось V!RTuE, 08-09-2014 в 19:35.


Отправлено: 19:24, 08-09-2014 | #13


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


V!RTuE, ну, так вот и ответ, как я понимаю:
Цитата V!RTuE:
Код: Выделить весь код
if "%1_"=="_" (START /MIN CMD.EXE /C "%~s0" any_word & EXIT)
»

Отправлено: 19:56, 08-09-2014 | #14


Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Iska:
ну, так вот и ответ, как я понимаю: »
а если заменить "%~s0" на %0 или "%~0" или "%~f0", то должно полностью имя отображаться? и вообще что значит именно эта буква s?

Отправлено: 20:01, 08-09-2014 | #15


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


А дальше Вы и получаете в:
Цитата V!RTuE:
Код: Выделить весь код
SET f=%~dp0
»
короткое имя, поскольку повторный вызов пакетного файла идёт по указанному Вами короткому имени:


Цитата V!RTuE:
а если заменить "%~s0" на %0 или "%~0" или "%~f0", то должно полностью имя отображаться? »
Лучше «"%~f0"». Возможно, придётся поиграться с кавычками.

Цитата V!RTuE:
и вообще что значит именно эта буква s? »
call /?
Операции подстановки параметров пакетного файла (%n) также расширены.
Допускается применение следующих синтаксических конструкций:

%~1 - из переменной %1 удаляются обрамляющие кавычки (")
%~f1 - переменная %1 расширяется до полного имени файла
%~d1 - из переменной %1 выделяется только имя диска
%~p1 - из переменной %1 выделяется только путь к файлу
%~n1 - из переменной %1 выделяется только имя файла
%~x1 - из переменной %1 выделяется расширение имени файла
%~s1 - полученный путь содержит только короткие имена
%~a1 - переменная %1 расширяется до атрибутов файла
%~t1 - переменная %1 расширяется до даты /времени файла
%~z1 - переменная %1 расширяется до размера файла
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:01, 08-09-2014 | #16


Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Iska, тогда мне что надо заменить? если только 2 строки поменяю, то это поможет?
Код: Выделить весь код
if "%1_"=="_" (START /MIN CMD.EXE /C %0 any_word & EXIT)
и
echo Расположение К+: "%~dp0%ZM%" >> "%f%body.txt"
P.S.: Тогда почему на моем компе с win 8.1 и виртуалке с win xp sp3 таких проблем не возникает?

Отправлено: 20:06, 08-09-2014 | #17


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b)
Цитата V!RTuE:
P.S.: Тогда почему на моем компе с win 8.1 и виртуалке с win xp sp3 таких проблем не возникает? »
Возможно там у Вас совпадает короткое и длинное имя папки, содержащей командный файл. Проверьте.

Отправлено: 20:12, 08-09-2014 | #18


Аватара для V!RTuE

Пользователь


Сообщения: 90
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Iska:
Возможно там у Вас совпадает короткое и длинное имя папки, содержащей командный файл. Проверьте. »
расскажите поподробнее как это сделать? и с помощью чего?
Разобрался. Действительно короткое имя совпадало. Теперь экспериментирую с этой строкой
Код: Выделить весь код
if "%~1" == "" (start "" /min "%comspec%" /c "%~f0" any_word & exit /b)
пока не хочет в таком виде запускаться батник, если есть пробелы в пути к файлу. Точнее запускается, но до конца не выполняется. разбираюсь где у меня в коде ошибка

Последний раз редактировалось V!RTuE, 08-09-2014 в 20:51.


Отправлено: 20:19, 08-09-2014 | #19


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Лично мне проще всего смотреть посредством Far Manager'а, получая отображение коротких имён по «Ctrl-N»:

А Вы можете опробовать «dir /x» в виде:
Код: Выделить весь код
E:\Песочница\0397>dir /x /a:d
…
 Содержимое папки E:\Песочница\0397

08.09.2014  20:37    <DIR>                       .
08.09.2014  20:37    <DIR>                       ..
08.09.2014  20:39    <DIR>          01D5~1       Мама мыла раму

Отправлено: 20:48, 08-09-2014 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как убрать сокращение имени папки в пути к файлу?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Как убрать длинные пути к расшаренным папкам? Wanderer-1000 Microsoft Windows 7 0 16-08-2012 10:15
Интерфейс - Копирование пути к файлу с помощью горячих клавиш garynich Microsoft Windows 7 12 30-03-2012 15:00
CMD/BAT - [решено] Текущая дата в пути к файлу AlexVong Скриптовые языки администрирования Windows 3 18-11-2011 00:43
Доступ - длина пути к файлу exo Windows Server 2008/2008 R2 5 20-04-2011 19:04
CMD/BAT - [решено] Ошибка в пути к файлу Lubitel Softa Скриптовые языки администрирования Windows 10 04-10-2010 15:02




 
Переход