อัปโหลดเฉพาะไฟล์ล่าสุดด้วย WinSCP


2

ฉันใหม่ที่ WinSCP ฉันต้องการทราบว่าแอปพลิเคชันนี้จะอนุญาตให้ฉันส่งเฉพาะไฟล์ที่แก้ไขล่าสุดในไดเรกทอรีท้องถิ่นไปยังไดเรกทอรีระยะไกลหรือไม่ โปรดทราบว่าเนื้อหาในทั้งสองโฟลเดอร์ไม่ตรงกันในเวลาที่กำหนดดังนั้นการซิงค์ไม่ใช่ตัวเลือก

ฉันจัดการเพื่อสร้างการเชื่อมต่อและ "วาง" ไฟล์ลงบนเซิร์ฟเวอร์ อย่างไรก็ตามฉันไม่สามารถคิดได้ว่าฉันจะบรรลุสิ่งที่ฉันต้องการได้อย่างไร

นี่คือคำสั่งของฉัน ...

winscp.exe /console /command "option batch on" "open ftp://user:pass@remoteip:port -explicitssl -passive" "put c:\files\Completed /Test" "exit" /log=c:\winscp_log.txt

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก ...


ดูตัวอย่าง WinSCP อัพโหลดไฟล์ล่าสุด
Martin Prikryl

คำตอบ:


3

คุณจะไม่สามารถทำได้โดยใช้ WinScp ด้วยตัวเอง มันเป็นสคริปต์ที่ไม่ซับซ้อน คุณจะต้องใช้ภาษาสคริปต์อื่นเพื่อรับไฟล์ล่าสุด

ตัวอย่างเช่นไฟล์ชุดนี้:

@echo off

for /f "delims=" %%i in ('dir /b /od c:\files\Completed\*') do set LastFile=%%i

winscp.exe /console /command "option batch on" "open ftp://user:pass@remoteip:port  -explicitssl -passive" "put c:\files\Completed\%LastFile% /Test" "exit" /log=c:\winscp_log.txt

@ shf301 - สวัสดีนี่เป็นเคล็ดลับที่มีประโยชน์มากที่จะรู้ ในตอนนี้ฉันเชื่อว่ามันกำลังทำสิ่งที่ตั้งใจจะทำ อย่างไรก็ตามตัวแปร LastFile ดูเหมือนจะไม่จับชื่อไฟล์ทั้งหมดหากมีช่องว่างหรือไม่ แก้ตัวไม่รู้ของฉัน แต่ฉันจะแก้ไขเพื่อจับช่องว่างในชื่อไฟล์ได้อย่างไร ข้อผิดพลาดบันทึก winscp "ระบบไม่สามารถหาไฟล์ที่ระบุ" c: \ files \ Completed \ Copy "แต่ชื่อไฟล์จริงคือ" c: \ files \ Completed \ Copy of text.txt "ขอบคุณหากคุณสามารถแสดงให้ฉันเห็นว่า เพื่อจัดการเส้น "สำหรับ"
โมเลกุล

ฉันอัพเดตคำตอบแล้ว ตามค่าเริ่มต้นสำหรับจะแบ่งช่องว่างการตั้งค่าตัวคั่นเป็นไม่มีอะไร ("delims =") จะไม่ทำให้ชื่อไฟล์แตก
shf301

@ shf301 - ขอบคุณมาก สิ่งนี้ทำงานเหมือนกับที่ฉันต้องการตั้งค่า ขอบคุณที่คุณช่วย. หากไม่ถามมากเกินไปฉันมีปัญหาการเขียนสคริปต์อื่นที่ฉันต้องการความช่วยเหลือจากคุณถ้าเป็นไปได้ ฉันไม่ต้องการที่จะหยาบคายและวางไว้ที่นี่ก่อนที่ฉันจะถามว่าคุณเต็มใจที่จะดู :) โปรดแจ้งให้เราทราบ ขอบคุณ!
โมเลกุล

@ shf301 - แก้ตัวความไม่รู้ของฉัน แต่ %% ฉันจะทำอย่างไร เมื่อฉันลบ @echo off ฉันเห็นว่ามันกำลังผ่าน% i เหตุผลที่ฉันถามเมื่อฉันลองใช้สคริปต์ในเครื่องอื่นการวนซ้ำจะไม่เก็บชื่อไฟล์ว่าทำงานบนพีซีของฉันอย่างไร "สำหรับ" ยังคงดูเหมือนว่ามันแยกช่องว่างและไม่สามารถจดจำพวกเขาได้
โมเลกุล

1
%% i เป็นตัวแปร ตัวแปรในแบตช์ไฟล์เริ่มต้นด้วย% เสมอ กระบวนการแบทช์จะปิดหนึ่งครั้งดังนั้นการวนซ้ำจะเห็นเพียง% เดียว ฉันไม่แน่ใจว่าทำไมมันไม่ทำงาน
shf301

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.