[英]Escaping special characters batch for loop
我有一個循環遍歷一個文本文件,其中每行都有幾個文件路徑。
目標是迭代拋出文件路徑並將它們復制到不同的位置。
我不是 windows 野獸(首選 UNIX),但設法使它工作:
@echo off
For /f "tokens=* delims=" %%a in ('type file_list.txt') do xcopy /hrkvy "%%a" "S:\dest_dir"
.txt 中的路徑是指向某些文件的完整路徑。 每一行都有一條路徑。 最終結果是一個腳本,它應該將存儲在計算機上其他位置的文件復制到我啟動腳本的位置。
問題是某些路徑包含諸如單引號之類的字符,這使我的代碼無法正常工作。 以下是 file_list.txt 的示例:
C:\temp\path with single quote ' - 1.txt // doesn't work
C:\temp\path without single quote - 2.txt // work
C:\temp\path with single quote ' - 3.txt // doesn't work
但是它不適用於包含特殊字符的路徑。 單引號以外的某些字符可能會導致問題。 我不知道如何從循環中轉義這些字符。 任何想法?
您的問題描述缺少太多信息。
如果不顯示示例文件或解釋您認為哪些特殊字符有問題,就很難猜出真正的問題是什么。
但是在這種情況下,唯一有問題的特殊字符是"%%a"
!
和插入符號^
,但前提是您啟用了延遲擴展!
如果您的路徑本身被引號包圍,您可能會遇到更多問題。
但是稍微修改一下,應該可以解決任何問題。
@echo off
setlocal DisableDelayedExpansion
For /f "delims=" %%a in (file_list.txt) do (
xcopy /hrkvy "%%~a" "S:\dest_dir"
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.