Script batch untuk membuat folder dengan 2 karakter pertama untuk membuat file konfigurasi

1

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?

Abu-abu
sumber
Silakan pertimbangkan menerima jawaban yang diposting dengan mencentang tanda centang di sampingnya, karena itu memecahkan masalah Anda.
Tamoghna Chowdhury
Saya perhatikan Anda "menghapus" jawaban "terima kasih" Anda. Cara yang benar untuk menyatakan terima kasih adalah dengan meningkatkan jawaban (ketika Anda memiliki cukup reputasi) dan menerima jawaban itu jika itu memecahkan masalah Anda.
DavidPostill
Anda juga tampaknya telah membuat 2 akun. Lihat Bagaimana satu tautan / gabung / gabungkan / kaitkan dua akun / pengguna? dan / atau saya secara tidak sengaja membuat dua akun; bagaimana cara menggabungkan mereka? untuk panduan tentang cara menggabungkan akun Anda. Jika Anda tidak menggabungkannya, Anda tidak akan dapat menerima jawaban atau komentar menggunakan akun yang lebih baru.
DavidPostill
Hai, itu semua karena masalah saat membuat akun, itulah yang menyebabkan komentar sebagai masalah jawaban, karena saya kebanyakan tidak bisa melakukan apa-apa. Saya baru mengenal stackexchange jadi saya tidak tahu persis apa itu apa dan apa melakukan apa. Sekarang setelah semuanya beres, saya berhasil menandai jawaban dan memposting komentar. Terima kasih dan semoga harimu menyenangkan!
abu

Jawaban:

0

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 enabledelayedexpansiondan !var!bukannya %var%.

Ini adalah versi terkoreksi dari file batch:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (test.txt) do (
  set first2=%%i
  set first2=!first2:~0,2!
  echo 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
endlocal

Bacaan lebih lanjut

DavidPostill
sumber
Hai, saya akhirnya mendapat opsi untuk menandai jawaban Anda sebagai jawaban yang benar, terima kasih atas bantuannya
abu