簡體   English   中英

Escaping 特殊字符批量for循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM