Saya mencoba menulis skrip yang akan menemukan semua persimpangan direktori pada disk dan kemudian membuatnya kembali di lokasi lain. Pertama-tama, saya harus menemukan semua persimpangan dan mengedit output agar lebih mudah dibaca.
Ini adalah test.txt:
Volume in drive C has no label.
Volume Serial Number is A0D2-DFB0
Directory of C:\
14.07.2009. 06:08 <JUNCTION> Documents and Settings [C:\Users]
13.01.2015. 10:26 <JUNCTION> Users [E:\Users]
0 File(s) 0 bytes
Directory of C:\ProgramData
14.07.2009. 06:08 <JUNCTION> Application Data [C:\ProgramData]
14.07.2009. 06:08 <JUNCTION> Desktop [C:\Users\Public\Desktop]
14.07.2009. 06:08 <JUNCTION> Documents [C:\Users\Public\Documents]
14.07.2009. 06:08 <JUNCTION> Favorites [C:\Users\Public\Favorites]
14.07.2009. 06:08 <JUNCTION> Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
14.07.2009. 06:08 <JUNCTION> Templates [C:\ProgramData\Microsoft\Windows\Templates]
0 File(s) 0 bytes
Directory of C:\ProgramData\Oracle\Java\javapath
24.12.2014. 18:22 <SYMLINK> java.exe [D:\Programs\Java 8u25\bin\java.exe]
24.12.2014. 18:22 <SYMLINK> javaw.exe [D:\Programs\Java 8u25\bin\javaw.exe]
24.12.2014. 18:22 <SYMLINK> javaws.exe [D:\Programs\Java 8u25\bin\javaws.exe]
3 File(s) 0 bytes
Total Files Listed:
3 File(s) 0 bytes
8 Dir(s) 16.309.276.672 bytes free
- Ini adalah skrip (belum selesai) yang saya jalankan:
echo on
cd \
set start=
set end=
set paths=
type NUL > output.txt
for /f "tokens=* skip=3" %%l in (C:\test.txt) do (
for /f "tokens=1" %%d in ("%%l") do (
if %%d==Directory (
for /f "tokens=3" %%p in ("%%l") do (
set start="%%p"
)
) else (
for /f "tokens=3" %%j in ("%%l") do (
if %%j==^<JUNCTION^> (
for /f "tokens=4*" %%h in ("%%l") do (
set end="%%h"
echo %start% %end% >> output.txt
)
)
)
)
)
)
Masalahnya adalah bahwa output.txt berakhir dengan beberapa baris "Echo ON" alih-alih memiliki jalur di sana. Jika saya mengganti "% mulai%% akhir%" dengan string apa pun (mis. "Sosis") saya mendapatkan output.txt diisi dengan sosis. Jika saya menjalankan echo set% end% setelah skrip berjalan, output adalah "Templates" yang diharapkan. Saya menduga perintah set tidak mengatur apa pun sampai salah satu loop selesai.
Apakah saya benar? Apakah ada jalan keluarnya? Saya benar-benar perlu menjalankan ini di CMD karena harus dijalankan dari disk Windows Repair.
P.S. Saya tahu kode saya tidak akan berfungsi untuk tujuan saya walaupun dengan program ini diperbaiki, tetapi saya baru saja sampai di sana, hal pertama yang pertama.