2013-10-24 3 views
0

Это похоже на простой вопрос, но что делает «^» в пакетном режиме? Я делаю что-то похожее на следующий код (скопированный с here). Файл someFile.txt содержит имена файлов для сохранения, а «папка» - это каталог, из которого можно удалить все файлы , а не, упомянутые в файле someFile.txt. Почему этот код не работает, когда ^ удален с ^| в заявлении for. Кроме того, почему не может быть заключено выражение do в (), чтобы создать более длинное выражение?Что делает «^» в пакетном скрипте

@echo off 
setlocal 
set folder="c:\somePath" 
set excludeFile="c:\somePath2\someFile.txt" 
for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do del "%folder%\%%F" 

ответ

1

^экранирует следующий символ отнять все особое значение.^останавливает трубу из imediatly трубопровода. так можно сделать так:

for /f "eol=: delims=" %%F in ('dir /b /a-d %folder% ^| findstr /vibg:%excludeFile%') do (del "%folder%\%%F") 
+0

so^разрешает выражение dir для оценки перед трубопроводом? А о нем(), выражение внутри() должно оставаться в одной строке или что-то еще? O я получаю его, потому что его строка, '|' вызовет немедленный выход – jenesaisquoi

+0

yup. первая половина из них будет imediatly труба до половины sencond без начала for. – nephi12

1

Это позволяет печатать специальные символы.

из википедии:

Некоторые символы, такие как трубы («|») символов, имеют особое значение в командной строке. Они не могут быть напечатаны в виде текста с помощью команды ECHO, если не спасся с помощью курсора символ ^:

C:\> Echo foo | bar 
'bar' is not recognized as an internal or external command, 
operable program or batch file. 

C:\> Echo foo ^| bar 
foo | bar 

Не уверен о делать() вещь, хотя

Источник: http://en.wikipedia.org/wiki/Batch_file

Смежные вопросы