Saya memiliki kode berikut dalam kumpulan saya, yang ingin saya baca baris di test.txt, buat folder dengan 2 Karakter pertama dan buat file konfigurasi untuk masing-masing item dalam folder yang ingin mereka buat.
Berikut adalah struktur kode saya:
@echo off
for /f "tokens=*" %%i in (test.txt) do (
set first2=%i:~0,2%
md "C:\Documents and Settings\someuser\Desktop\template\config\%first2%" 2>nul
type part1.txt>"C:\Documents and Settings\someuser\Desktop\template\config\%first2%\%%i"
echo.>>"C:\Documents and Settings\someuser\Desktop\template\config\%first2%\%%i"
echo Hostname=%%i.somedns.net>>"C:\Documents and Settings\someuser\Desktop\template\config\%first2%\%%i"
type part2.txt>>"C:\Documents and Settings\someuser\Desktop\template\config\%first2%\%%i"
)
Pause
Contoh input dari test.txt:
OR0001R1
OR0001R2
OR0008R1
OR0009R1
OR0009R2
OR0009R3
OG0001R1
OG0001R2
OG0002R1
OG0003R1
Masalah saya adalah sebagai berikut, daripada membuat folder ATAU di mana ia kemudian menciptakan OR0001R1.ini dan seterusnya dan kemudian membuat folder OG untuk OG inis, itu hanya membuat folder ATAU dan semua konfigurasi di dalamnya. Adakah yang bisa membantu saya dengan ini?
windows-xp
batch-file
Abu-abu
sumber
sumber
Jawaban:
Itu hanya membuat folder
OR
Anda harus menggunakan
enabledelayedexpansion
.Masalah dengan kode Anda adalah bahwa di dalam blok kode (serangkaian pernyataan kurung) setiap
%var%
akan digantikan oleh nilai aktual dari variabel pada waktu parse bukan pada waktu eksekusi .Jika Anda ingin menggunakan nilai variabel lingkungan yang diubah dalam satu lingkaran, maka Anda harus menggunakan
setlocal enabledelayedexpansion
dan!var!
bukannya%var%
.Ini adalah versi terkoreksi dari file batch:
Bacaan lebih lanjut
sumber