سؤال

واني اسعى الى دفعة استخراج بعض في رر التي هي في بعض البريدي في بعض الدلائل. قصة طويلة قصيرة وهذا هو بلدي حلقة من خلال ملفات رر:

for %%r in (*.rar) do (

unrar x %%r
)

والمشكلة هي أن ٪٪ ص يحصل على قيمة خاطئة. إذا كان اسم الملفات هو "ملف name.rar" ثم ٪٪ ص يحصل على "ملف" قيمة - يتوقف عند مساحة الأول في اسم الملف

وكيف يمكنني الحصول على هذه الحلقة للعمل الملفات ملف مع مسافات في الأسماء؟

وشكرا

هل كانت مفيدة؟

المحلول

وجرب هذا:

for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"

إذا كنت تستخدم في ملف دفعي، وتذكر أنك سوف تحتاج إلى مضاعفة علامات النسبة المئوية للهروب منها.

نصائح أخرى

وسيحتوي %%r اسم الملف كاملا بما في ذلك المسافات. انها دعوة لunrar الذي يحتوي على المشكلة. إذا كان اسم الملف يحتوي على مسافات لديك لاحتوائه في علامات اقتباس، وإلا unrar لا تكون قادرا على رؤية أن معلمتين (مفصولة بمسافة) file وname.rar هي في الواقع اسم ملف واحد مع الفضاء.

وهكذا ما يلي ستعمل:

for %%r in (*.rar) do unrar "%%r"

وأيضا، إذا كنت آير غريبة حيث تكمن المشكلة، أنه في بعض الأحيان مفيدة جدا لمجرد استبدال دعوة البرنامج مع الصدى:

for %%r in (*.rar) do @echo %%r

وحيث سترى أن تتضمن ٪٪ ص المساحات في أسماء الملفات ولا مزق بينهما.

والمشكلة هي أن 'ل' يستخدم مساحة كافتراض محدد. يمكنك تعيين هذا باستخدام delims = XXX. تبدو هنا لبناء الجملة. أو يمكنك استخدام FORFILES .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top