Я немного смущен тем, что вы действительно хотите. В вашем примере кода есть FOR ... IN
, который содержит только один файл в IN ()
, то есть содержимое %fred%
. Затем вы записываете одно имя файла во временный файл. После этого у вас есть SET
, который заменяет обратную косую черту на прямую косую черту в имени временного файла. Но это никогда не касается файлов.
Однако в вашем начальном сегменте вы хотите заменить обратную косую черту на прямую косую черту в файле. Так что я сосредоточен на этой части. Это будет сделано так:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
REM Here's a backslash: \
FOR /F "delims=" %%a IN ('TYPE %0') DO (
SET line=%%a
ECHO !line:\=/!
)
Обратите внимание, что для простоты этот маленький пакетный файл анализирует себя (%0
) и, следовательно, заменяет только одну обратную косую черту. Тем не менее, не стесняйтесь помещать любой файл рядом с TYPE
.
EnableDelayedExpansion
делает синтаксис с работой !
(см. SET /?
для получения дополнительной информации о отложенном расширении). TYPE
явно записывает файл в консоль. FOR /F "delims="
теперь получает выходные данные этой строки на строку (поскольку delims=
не определяет разделитель для токенизатора FOR
). Переменная line
необходима, потому что я не думаю, что есть правильный способ заставить ECHO
-линей работать с %%a
.
Единственным недостатком является то, что это удалит все пустые строки из исходного файла. Я не знаю, если это проблема для вас.